有没有一个mov和mp4容器是可以互换的?

时间:2018-04-13 09:04:15

标签: ffmpeg mp4 ffprobe

这个问题很傻, 但我得到了以下情况。

我有一些来自某些客户端的MOV视频文件,我打算将它们转换为MP4以便能够在浏览器上运行。 但是,当我试图在浏览器上打开它时,它在Firefox和Chrome中都运行良好。

当我在其中一个文件上运行ffmpeg时,我得到以下信息:

ffmpeg -i MyVideo.mov -hide_banner
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'MyVideo.mov':
  Metadata:
    major_brand     : qt  
    minor_version   : 537199360
    compatible_brands: qt  
    creation_time   : 2011-06-27 19:53:07
    Duration: 00:10:10.96, start: 0.000000, bitrate: 10234 kb/s
    Stream #0:0(eng): Video: h264 (Main) (avc1 / 0x31637661), yuv420p(tv, bt709), 1280x720, 10103 kb/s, 25 fps, 25 tbr, 2500 tbn, 5k tbc (default)
    Metadata:
      creation_time   : 2011-06-27 19:53:07
      handler_name    : Apple Alias Data Handler
      encoder         : H.264
   Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 126 kb/s (default)
    Metadata:
      creation_time   : 2011-06-27 19:53:07
      handler_name    : Apple Alias Data Handler

当运行ffprobe检查容器时,我得到了一堆输出:

[FORMAT]
format_name=mov,mp4,m4a,3gp,3g2,mj2
[/FORMAT]

这究竟是什么意思?所有这些容器都可以互换? 如果没有,为什么浏览器能够读取此文件?

Firefox版本:59.0.2 Chrome版本65.0.3325.181

1 个答案:

答案 0 :(得分:3)

MP4容器是ISO格式,源自Quicktime格式。 FFmpeg有一个模块(解复用器)来解析你粘贴的format_name字符串中提到的所有扩展。为安全起见,建议将MOV重新连接到MP4,因为您不应该依赖于浏览器的松弛。

ffmpeg -i in.mov -c copy -movflags +faststart out.mp4

执行此操作还可以帮助您验证MP4中是否所有流都可以接受,例如LPCM音频流在MOV中是可接受的,但不是MP4。