视频转码

如何将 iPhone MOV 格式视频转换为通用 MP4 格式

在浏览器中把 QuickTime MOV 转换为 H.264 MP4,并了解文件当初为什么被拒绝。

MOV 和 MP4 比看起来更接近

这两种容器格式有一个共同的祖先。苹果的 QuickTime 文件格式是 ISO 基础媒体文件格式的基础,而 MP4 正是建立在这之上。用十六进制查看器并排打开一个 .mov 文件和一个 .mp4 文件,您会看到同样的 box 结构:一个 ftyp box 声明文件自称是什么,一个 moov box 保存索引,一个 mdat box 保存媒体数据本身。

很多情况下,直接从 iPhone 导出的 .mov 文件里已经是 H.264 视频加 AAC 音频,这正是 .mp4 文件所包含的内容。让它们看起来不同的,主要就是扩展名。

那为什么有些设备还是不肯播放

原因主要有两个。第一个是里面的编解码器。如果您的 iPhone 相机设置的是“高效率”而不是“兼容性最佳”,它就会以 HEVC(也叫 H.265)格式录制。这仍然封装在 .mov 里,但 HEVC 的支持程度参差不齐,不像 H.264 那样普遍:它取决于操作系统、显卡硬件和授权情况,这就是为什么同一个文件在 Mac 上播放毫无问题,却被 Windows 上的剪辑软件拒绝。高于手机级别的摄像机还会用上更小众的选项,比如 ProRes,除了专业软件之外几乎没有东西能打开它。

第二个原因是那些只按扩展名判断的软件。不少上传表单、老旧的编辑器和内嵌播放器只读取文件名最后四个字符就不再多想。文件哪怕逐字节都完全合规,照样可能被退回。

这个转换器做的事

它读取容器,取出视频轨道,用浏览器自带的解码器解码,再重新编码为 H.264,封装进一个新的 MP4。如果音频轨道是 AAC,就原样复制过去,所以声音和源文件逐比特相同,不额外花时间,也不损失质量。

画面尺寸保持不变。这里的转换不是压缩,所以一个 4K 的 MOV 转出来还是 4K 的 MP4,不会被偷偷缩小。码率预算设定得比源视频轨道原本的用量略低一些,这通常会让文件稍微小一点。

视频是重新编码而不是直接复制的,这个区别很重要。您要为此付出一次有损编码的代价。对于要发给客户、发到手机、投到投影仪,或者发到反正还会再编码一次的社交平台的片段来说,这看不出来。但对于您打算在剪辑软件里调色和剪辑的素材,这就不是您想要的了。

兼容性,刻意做出的选择

输出采用 H.264 Baseline 级别。Baseline 省去了一些更高级别才用的工具,包括 B 帧,所以在相同码率下,它的压缩效率比 High 级别略低一些。作为回报,您得到的文件几乎能在任何地方播放:老旧的安卓手机、机顶盒、车载主机、会议室里接着投影仪的那台老古董笔记本电脑。如果您转换的原因正是某个设备拒绝播放您的 MOV,这笔交易就划算。

可能出问题的地方

  • 浏览器需要一个能解码 MOV 内部内容的解码器。H.264 是通用的。HEVC 取决于您当前用的这台机器。ProRes 不会被解码。
  • 如果快速路径跑不起来,或者自我测算比实时还慢,它就会退回到从 canvas 录制视频。这至少要花上片段本身的播放时长,而在不支持 MP4 录制的浏览器上,产出的会是 WebM。
  • 处理期间整个文件都保存在内存里。短片段没问题。时间长的 4K 文件会耗尽这个标签页的资源。
  • 不是 AAC 的音频无法直接复制,快速路径会略过它继续处理,因此生成的 MP4 没有声音。删除原文件之前,请先播放确认。

什么时候 ffmpeg 是更好的选择

如果您的 MOV 已经包含 H.264 和 AAC(只要手机设置的是“兼容性最佳”就会是这样),那它根本不需要转换,只需要换个封装,而 ffmpeg 用流复制就能做到:ffmpeg -i clip.mov -c copy clip.mp4 会把媒体数据搬进一个新容器,不解码任何一帧画面。不管文件多大,几秒钟就能完成,而且因为没有任何重新编码,画质完全没有损失。

这在各方面都严格优于浏览器能做到的一切,所以如果您经常处理视频素材,装一个是值得的。而浏览器适合另一种情况:只有一个文件,不确定里面是什么,也没兴趣为了搞清楚而去装软件。

您的素材留在自己的设备上

不会上传任何内容。解封装、解码、编码和重新封装全部都在这个页面内完成,如果素材是一场婚礼、一段还在禁发期的采访,或是一个尚未发布的剪辑版本,这一点值得了解。打开浏览器的开发者工具,盯着网络面板,转换点什么试试。没有任何请求会携带您的视频,因为根本没有发出过这样的请求。

动手试试

MOV 转 MP4 在当前标签页中处理您的文件,全程无需上传。

打开 MOV 转 MP4