跳转到主要内容
格式知识7 分钟

容器与编码是什么:MP4/MKV 与 H.264/HEVC 的关系

「换格式」其实包含两件不同的事:换容器(外壳)与换编码(压缩方式)。分清这两层,多数「能不能无损转换」「为什么打不开」的问题都有直接答案。

本文只讨论桌面与网页场景的常见容器与编码;专业制作领域的 ProRes、DNxHR 等中间编码不在展开范围。

一个视频文件里装了什么

一个 .mp4 文件至少包含两路数据:视频流(压缩后的画面)与音频流(压缩后的声音),部分文件还有字幕流与章节信息。把这些流按约定方式封装在一起的「外壳」就是容器(container),MP4、MKV、WebM、MOV、AVI、TS 都是容器。

画面本身按某种编码(codec)压缩存储:H.264/AVC 是当前通用度最高的编码,H.265/HEVC 压缩效率高约一半但兼容性窄,AV1 是新一代开放编码。音频流同样有编码:AAC、MP3、Opus 等。

容器与编码是自由组合关系:同一个 H.264 视频流可以装在 MP4 里也可以装在 MKV 里;MP4 容器里也可以装 HEVC。文件扩展名只说明容器类型,不说明编码。

换容器与换编码:代价差别很大

操作本质耗时/画质典型场景
换容器(remux)把流原样取出重新封装秒级,画质零损失MKV 转 MP4 播放器不认、修正扩展名
换编码(transcode)解码后重新压缩分钟级,有代际画质损失减小体积、换兼容编码、改参数
只换音频编码视频流不动,音频重编秒到分钟级,画质不变换 AAC 兼容、压缩音轨

remux 有两个前提:目标容器支持源流的编码(HEVC 装进旧设备不认的 MP4 profile 依然播不了),且封装参数合法(时间戳、分辨率层级)。不满足时只能转码。

「打不开」多数是编码问题而不是容器问题

播放器报「不支持格式」时,先弄清缺的是哪一层:系统能识别 MP4 容器但缺 HEVC 解码器(Windows 需要购买 HEVC 扩展),表现为文件图标正常但黑屏或有声无画;缺音频解码器表现为画面正常无声。

自检方法:把文件拖进浏览器打开(Chrome 支持的编码最广),或查看文件属性里的编码信息。确认是 HEVC 后,最省事的路径是转成 H.264 的 MP4——所有设备通吃,代价是文件变大。

录制出来的 .ts 流文件、直播录像的 .flv 同理:容器小众,换进 MP4 大概率秒级 remux 就能播。

怎么判断一个文件该 remux 还是转码

看三个信号:播放器是否报缺编码器(是→转码);是否需要改体积或参数(是→转码);只是换外壳且目标容器支持源编码(是→remux)。

普通用户经验法则:转 MP4 前先试 remux,转码留给确实需要改内容的场景——画质与时间都省下来。

常见问题