MP4 vs. MKV:到底该用哪个容器格式?
容器的真正作用(以及它做不到的事)
我们先来精确定义一下视频容器格式到底是什么。容器就是一个包装盒。它把视频流、音频流、字幕、章节标记和元数据打包进一个文件里。关键是,它并不决定画质。两个文件,一个 MP4 和一个 MKV,如果都用相同的比特率编码了完全一样的 H.264 视频,那它们看起来会一模一样。容器的工作是决定可以存储哪些类型的流、如何为快进快退建立索引,以及哪些设备和软件能顺利读取这个文件。 MP4,全称 MPEG-4 Part 14,于 2001 年标准化,基于苹果的 QuickTime 容器。而 MKV,即 Matroska Video,是一个 2002 年出现的开源项目,由一群希望格式限制更少的开发者创建。这两种格式本身都不压缩视频。压缩的工作属于像 H.264、H.265、AV1 或 VP9 这样的编解码器,它们都可以安稳地待在任何一种容器里。 这个区别是无尽困惑的根源。人们经常在遇到编解码器问题时怪罪容器。如果一个视频在你的智能电视上播不出来,问题可能在于电视根本不支持 HEVC (H.265) 编解码器,而不是因为你用了 MKV 而不是 MP4。在编解码器不兼容的情况下,不重新编码只切换容器是没用的。但它能解决的问题是:播放器支持编解码器,但就是不认这个容器,这种情况比你想象的要常见。
MP4 的优势:兼容性与流媒体
MP4 的主要优势很简单:兼容性。它拥有近乎通用的硬件和软件支持。所有主流平台——iOS、Android、Windows、macOS、网页浏览器、PlayStation、Xbox、Roku、Apple TV 以及大多数智能电视——都能直接读取 MP4,无需额外应用。你的 iPhone 录制视频时,保存的就是 MP4(或其近亲 MOV)。YouTube、Vimeo、Instagram 和 TikTok 都把 MP4 作为首选上传格式。 对于网络流媒体,MP4 有一个关键的结构优势。它支持一种叫做“快速启动”(或渐进式下载)的功能,它将文件的索引——即 moov atom——放在文件的开头。当你把一个启用了快速启动的 MP4 上传到 CDN,观众在整个文件下载完之前就可以立即开始观看。在 FFmpeg 中,对应的参数是 `-movflags +faststart`。大多数视频平台会自动帮你做这件事,但如果你自己托管视频文件,这是个必备知识。 MP4 和剪辑软件也相处融洽。Adobe Premiere Pro、Final Cut Pro、DaVinci Resolve 和 iMovie 都能原生导入和导出 MP4,通常无需任何转码。如果你要给客户交付一个成品视频、发布到社交媒体,或者发给一个你不清楚其技术配置的人,MP4 是安全、专业的默认选择。它唯一真正的局限在于,它对能装进去的东西很挑剔。
MKV 的优势:灵活性与功能深度
MKV 从一开始就被设计成一个面向未来的容器,对它能容纳的内容几乎没有任何限制。一个 MKV 文件可以包含多个视频轨道、多种语言的多个音轨,以及多种格式的多个字幕轨,比如 SRT、ASS、SSA,甚至蓝光光盘里的基于图像的 PGS 字幕。它还可以容纳章节标记、封面附件和丰富的元数据,理论上对流的数量没有限制。 这种灵活性使 MKV 成为家庭影院爱好者和媒体收藏家们无可争议的选择。一个完整的蓝光原盘翻录后存为 MKV,可以把主要的 H.264 或 H.265 视频、一条 TrueHD Atmos 音轨、一条备用的 DTS-HD MA 音轨、中英文字幕以及原盘的章节标记都打包在一起。所有这些都在一个整洁的文件里。想用 MP4 做到这些是行不通的;它对多音轨的支持很差,而且根本无法处理像 ASS 或 PGS 这样的字幕格式。 MKV 还原生支持像 FLAC 和 TrueHD 这样的无损音频编解码器,而 MP4 则是围绕 AAC 和 AC-3 构建的。如果你用 Plex 或 Jellyfin 运行一个媒体服务器,你应该用 MKV。任何跟独立、不同步的 `.srt` 文件斗争过的人,都懂把完美同步的字幕直接嵌入 MKV 文件里的那种整理的快感。特别是 Jellyfin,它处理 MKV 内嵌流的方式比处理 MP4 外挂文件要优雅得多。
编解码器兼容性:两种容器分别支持什么
两种容器都能处理最常见的视频编解码器:H.264、H.265/HEVC、AV1 和 VP9。真正的区别在于细节。 视频方面,MP4 对 H.264 和 H.265 有很好的官方支持,通过 ISOBMFF 规范也加入了对 AV1 的支持。虽然技术上可以在 MP4 中使用 VP9,但这很罕见且支持不佳。MKV 作为一个没有企业控制的开放标准,往往能更快地支持新编解码器,并且能处理从现代的 AV1 到老旧的 DivX/Xvid 在内的各种视频流。 音频方面,差距就大得多了。MP4 原生支持 AAC、AC-3、E-AC-3、MP3 和 Apple Lossless (ALAC)。它不支持 FLAC、TrueHD 或 DTS-HD MA。而 MKV,则支持所有这些,外加 Opus、Vorbis 以及你在野外可能遇到的几乎任何其他音频编解码器。如果你试图用 FFmpeg 把一条 FLAC 音轨强行塞进 MP4 容器,命令很可能会失败,或者更糟,会创建一个任何播放器都读不了的文件。 然后是字幕。MP4 的支持仅限于 MOV_TEXT (TX3G),一种基本的文本格式。它完全不支持在动漫字幕组中流行的带样式的 ASS/SSA 格式,也不支持蓝光光盘上使用的 PGS 图像字幕。MKV 则全部支持。如果你的视频依赖于带有自定义字体和定位的样式字幕,把它放进 MP4 意味着要么把字幕永久地“烧录”进视频里,要么就丢失所有样式。
两者之间的转换:哪些会变,哪些不变
通常,把一个 MKV 转换成 MP4(或反过来)并不需要完整的重新编码。你可以进行一次“remux”(重新封装),这只是把现有的视频和音频流重新打包到一个新的容器里。这个过程快得惊人——通常是实时完成的——并且没有任何质量损失。CocoConvert 能处理这种常见的重新封装,比如 H.264 或 H.265 视频配上 AAC 或 AC-3 音频,让你在 MKV 和 MP4 之间无缝切换。 然而,直接重新封装并不总是可行。如果你的 MKV 文件用的是 FLAC 音频而你需要一个 MP4,那么音频就必须被转码,通常是转成 AAC。对于立体声,192 kbps 是一个可靠的选择,如果你想要更多余量,可以用 256 kbps。CocoConvert 会自动处理这种音频转码,但你应该意识到音频被改变了。FLAC 是无损的,而 AAC 不是。对大多数人的耳朵来说,区别微乎其微,但如果你是在存档源材料,请务必保留原始的 MKV。 字幕带来了另一个复杂问题。如果你的 MKV 使用 PGS 或 ASS 字幕,转换成 MP4 意味着这些字幕轨要么被丢弃,要么必须被烧录进视频里。CocoConvert 可以在转换过程中将 SRT 和 ASS 字幕烧录进视频画面,但我们不支持烧录 PGS(位图)字幕,这需要复杂的 OCR 处理。要实现这个功能,你需要桌面工具。在 MKV 到 MP4 的转换中,多个音轨也会被合并成一个,所以请确保你选择了想要保留的那个语言。 反过来,从 MP4 转到 MKV,几乎总是一次简单、无损的重新封装,因为 MKV 能容纳 MP4 所能容纳的一切,甚至更多。
按使用场景的实用建议
该用哪种容器完全取决于你用这个文件做什么。 用于上传到社交媒体或视频平台,答案是 MP4。YouTube 自己的指南就明确推荐使用 H.264 视频和 AAC 音频的 MP4。这也是 Instagram 和 TikTok 所期望的格式。你可以上传一个 MKV 到 YouTube,但平台最终还是会把它转换掉,这反而增加了一个潜在的出错点。 用于分享给你不清楚其设备的人,用 MP4。如果你要发一个家庭视频给父母,让他们在 iPad 或三星电视上看,一个码率适中(比如 1080p 用 8 Mbps)的 H.264 视频 MP4 几乎可以在任何设备上播放。发一个 MKV 过去,可能就意味着要接到求助电话,教他们怎么安装 VLC 了。 用于像 Plex 或 Jellyfin 这样的家庭媒体服务器,MKV 是更优越的选择,特别是对于那些有多音轨或多字幕轨的文件。这两个服务器都能完美处理 MKV,而内嵌字幕也消除了管理外部 .srt 文件的头痛。 用于存档蓝光或 DVD 翻录,MKV 是社区标准是有原因的。它能毫无妥协地保留多个音轨、章节信息和无损音频。 用于视频剪辑工作流,MP4 通常是阻力最小的路径,能干净地导入所有主流的非线性编辑软件。虽然像 DaVinci Resolve 这样的一些剪辑软件能很好地处理 MKV,但为了兼容性,MP4 是更稳妥的选择。 用于老旧或嵌入式设备——比如车载音响、旧款智能电视、廉价安卓盒子——H.264 的 MP4 是最安全的选择。那个 MKV 容器里的 H.265 文件在一台 2015 年的智能电视上就是一场赌博。而一个 MP4 容器里的 H.264 视频呢?它几乎肯定能直接播放。
简而言之:一个决策框架
所以,到底哪个容器更好?真正的答案取决于你对三个问题的回答:这个文件将在哪里播放?它需要包含哪些流?以及完美保留原始质量是否至关重要? 如果文件必须在最广泛的设备上播放,且对观众来说没有任何麻烦,那 MP4 完胜。如果文件需要容纳多个音轨、样式字幕、无损音频和章节标记,那 MKV 是完成这项工作的唯一工具。对于存档源材料,当你一个流都不能丢失时,MKV 更有可能完整地保存所有内容。 对于大多数转换,CocoConvert 可以将你的文件从一个容器重新封装到另一个,而无需重新编码视频,这意味着速度快且没有质量损失。我们对限制也很坦诚。在无法干净转换的情况下(比如带 PGS 字幕或 TrueHD 音频转 MP4),就需要像 Handbrake 或 FFmpeg 这样的桌面软件了。我们宁愿直接告诉你这一点,也不愿让你在转换失败后才发现。 如果你不确定一个视频文件里到底有什么,帮自己一个忙,去下载 MediaInfo。这是一个免费的 Windows 和 macOS 工具,能在几秒钟内给你一份文件的完整分析报告:编解码器、比特率、音频声道、字幕格式,应有尽有。它能让你在 MP4 和 MKV 之间做决定时不再需要靠猜。