核心结论是 mp4 和 mpeg4 并不一样,很多人会把两者混为一谈,本质原因是 mpeg4 属于视频编码标准,而 mp4 属于容器文件格式,编码只是 mp4 这个容器内部可以装载的其中一种视频数据,mp4 容器还能装载其他类型编码的音视频轨道,mpeg4 编码也不只能封装进 mp4 容器,还可以放到 avi mkv 等其他容器里面。mpeg4 全称是 Moving Picture Experts Group 4,是 MPEG 组织制定的一套音视频压缩编码规范,核心作用是对原始视频图像做压缩编码,降低视频文件体积,mpeg4 里面还细分多个档次,比如大家熟悉的 mpeg4 asp,还有后来关联的 h264 其实属于 mpeg4 part10,很多人也会把 h264 笼统叫 mpeg4,这也是混淆的重要来源。mp4 全称是 MPEG 4 Part 14,它是 mpeg4 标准体系当中的第 14 部分,定义的是文件封装容器规范,它本身不负责压缩画面,只负责把压缩好的视频流音频流字幕轨道等数据按照固定结构打包整合,加上索引信息,让播放器可以顺序读取解码播放。
核心定义对比
| 对比项目 | mpeg4 | mp4 |
|---|---|---|
| 类别 | 视频压缩编码标准 | 文件封装容器格式 |
| 核心功能 | 压缩解码视频画面数据 | 封装整合音视频字幕等多轨道数据 |
| 所属体系 | mpeg4 整套编码规范 | 属于 mpeg4 标准的 Part14 容器部分 |
| 能否单独播放 | 不能单独作为文件播放,只是编码流 | 可以作为独立文件后缀名保存 |
| 可选轨道 | 只处理视频编码 | 可容纳 mpeg4 h265 avc aac mp3 等多种编码 |
容易混淆的关键原理
mpeg4 编码输出的是原始压缩码流,这个码流本身没有完整的文件索引,播放器拿到裸码流是很难正常拖动进度条随机跳转播放的,所以必须找一个容器把它封装起来,mp4 就是最常用的容器选择,这就造成大家看到后缀是 mp4,里面视频编码是 mpeg4,就误以为两者是同一个东西。
同时要区分,mpeg4 是一大套标准,分为很多部分,Part2 是传统 mpeg4 编码,Part10 是 h264 也就是 avc 编码,Part14 就是 mp4 容器,很多非专业教程表述不严谨,直接把整个 mpeg4 体系都简称为 mpeg4,进一步加深认知误区。
另外 mpeg4 编码也可以封装在 avi 容器当中,这种文件后缀是 avi,内部视频编码依然是 mpeg4,这就可以证明编码和容器是相互独立的两层概念。
实际识别区分操作步骤
第一步,查看文件后缀,后缀写着 mp4 代表这个文件是 mp4 容器封装文件,但是无法仅凭后缀判断内部视频编码是不是 mpeg4。
第二步,使用播放器或者媒体信息工具读取编码信息,查看视频编码一栏,如果显示 MPEG4 Visual,才代表内部视频是 mpeg4 编码,如果显示 AVC H264 HEVC H265 就不是传统 mpeg4 编码。
第三步,区分编码流和封装文件,单独的 mpeg4 裸流一般后缀为 m4v 或者裸 es 流,它不是 mp4 文件,只能完成编码输出,缺少容器的索引结构。
第四步,转码场景理解,把 mpeg4 编码的视频封装成 mp4,这个操作叫封装复用,不需要重新压缩画面,如果把其他编码转成 mpeg4 编码,这个操作才是编码转码,会重新压缩画面,带来画质损耗。
实际应用特点
传统 mpeg4 编码也就是 mpeg4 part2,现在已经属于比较老旧的编码,压缩效率不如 h264 h265,现在新设备很少默认使用这种编码,但是 mp4 容器现在依然是主流格式,几乎所有手机电脑播放器平台都支持 mp4 容器,哪怕内部编码换成 h264 h265,文件后缀依旧可以是 mp4。很多软件导出选项会写 mpeg4,这个选项实际是选择编码,而写 mp4 是选择输出容器,导出的时候需要同时选定编码和容器,两个选项是独立设置项。
【常见问题】
问题 1,后缀是 mp4 的文件里面视频编码一定是 mpeg4 吗
回答 1,不是,mp4 只是容器,mp4 内部可以选择 h264 h265 等多种编码,不一定是 mpeg4 编码,只有编码栏标注 MPEG4 Visual 才是 mpeg4 编码。
问题 2,mpeg4 编码能不能不用 mp4 容器保存
回答 2,可以,mpeg4 编码属于压缩码流,除了 mp4 容器之外,还可以封装进 avi mkv 等其他容器,所以 mpeg4 编码不强制绑定 mp4 容器。
问题 3,h264 属于 mpeg4 吗,那是不是等于 mp4
回答 3,h264 属于 mpeg4 标准体系里的 part10 编码,但是 h264 依旧只是编码,不等于 mp4 容器,h264 编码同样可以封装到 mkv avi 里面,不能把 h264 和 mp4 划等号。
问题 4,转码软件里面选择 mpeg4 编码输出 mp4 文件会不会改变编码
回答 4,选择 mpeg4 编码就是对画面重新压缩编码,再封装成 mp4 文件,这个过程属于编码加封装两步操作,不是单纯只生成 mp4 容器。
【免责申明】
本文内容仅作为技术科普参考,不同软件厂商对 mpeg4 相关命名可能存在自定义简写,部分产品界面标注名称和标准定义会存在差异,实际项目使用请以对应软件官方文档以及 MPEG 官方标准原文为准,本文不构成工程选型或者商用授权相关建议。


