简体中文

视频和字幕·直接媒体下载器

容器和编解码器:MP4、WebM 或 MP3 文件实际包含的内容

· 背景

媒体 视频 音频

包含不同视频、音频、定时和元数据轨道的媒体容器
原始 ToolAcre 矢量图

下载文件只是工作的一半;玩它取决于里面有什么。这篇文章解释了容器、编解码器以及为什么正确下载的 MP4 仍然无法在给定的播放器或编辑器中播放。

下载正常,但仍然无法打开 - 为什么成功下载的文件不是可播放的文件

完成的传输证明响应字节已到达浏览器并已保存。它并不能证明编辑器理解这些字节内所需的结构或解码器。

直接媒体下载器不会打开媒体内部结构。它将块保留在服务器的 MIME 标签下的 Blob 中并选择文件名,将播放诊断留给媒体工具。不完整的响应还可能创建无法播放的文件,因此在得出编解码器支持是唯一问题的结论之前,请先比较交付的大小和传输错误。中断的响应也可能产生不可用的结果,因此在假设解码器不兼容之前检查传输完成情况。

容器:盒子 — MP4、WebM、MKV 和 MP3 作为保存曲目、计时和元数据的包装器

容器组织轨道、计时、索引和元数据。 MP4、WebM 和 MKV 是熟悉的视听容器; MP3 一词通常用于 MPEG 音频文件格式,而不是一般的视频包装。

包装器告诉软件如何定位组件。它并不要求每个识别外部结构的应用程序都支持每个可能的编解码器。容器可以容纳多个音轨、字幕、章节和元数据,这进一步解释了为什么仅靠后缀无法概括播放需求。多个音轨、字幕流、章节和元数据可以共享一个包装器,从而使后缀成为一种特别不完整的描述。

编解码器:内容 — H.264、VP9、AV1、AAC 和 Opus,以及为什么同一容器可以容纳不同的编解码器

编解码器定义图像或声音的编码和解码方式。 H.264、VP9 和 AV1 描述视频编码系列; AAC 和 Opus 描述了音频编码选择。

一个 MP4 可以携带旧编辑器处理的组合,而另一个 MP4 使用那里不可用的较新编解码器。因此,匹配后缀并不意味着相同的解码要求。配置文件和级别细化了编解码器要求,即使同一台计算机上的应用程序之间的硬件加速可用性也可能有所不同。编解码器配置文件和级别进一步完善了要求,而一台机器上的应用程序之间的硬件解码支持可能有所不同。

为什么扩展名告诉您盒子,而不是内容 - 大多数“错误格式”令人惊讶的根源

扩展通常命名容器约定,而不是每个轨道编解码器。 Content-Type 同样广泛地标记了表示形式,并且无法枚举每个内部功能。

将 `.webm` 重命名为 `.mp4` 仅更改标签。它不会重写容器或转码编解码器,因此软件混乱可能会增加而不是消失。 MIME 值(例如 `video/mp4`)类似地命名了广泛的表示形式,而不是承诺特定的 H.264 或 AAC 组合。诸如 `video/mp4` 之类的广泛 MIME 值同样不能保证一种特定的视频和音频编码组合。它是初始路由提示,而不是解码器清单。

工作示例:两个 .mp4 文件,一个到处播放,一个不播放 - 阅读编解码器信息以了解原因

对于两个授权的 MP4 下载,请在受信任的检查器中打开每个文件并比较视频编解码器、音频编解码器、配置文件、尺寸和轨道布局。一个可能适合编辑器支持的解码器集,而另一个则不适合。

该示例需要真实的文件证据;没有声称通用的“到处播放”编解码器组合。应用程序版本、操作系统和安装的组件可能会更改兼容性。了解标准的检查员可以在不更改文件的情况下报告这些事实,从而保持诊断和转换之间的清晰区别。具有标准意识的检查员会在不修改字节的情况下报告这些属性,从而在任何建议的转换之前保留诊断。

这不包括什么——转码,这是一项单独的工作,而不是下载者应该默默做的事情

转码对曲目进行解码和重新编码,或将它们重新混合到另一个容器中。这是一个单独的处理作业,具有质量、兼容性和资源决策。

下载器绝不会默默地转换或组装输出。标记为 WebM 的响应保留主机提供的字节,即使 URL 或标头暗示了另一种期望。即使无损重新复用也会改变结构,并且应该经过深思熟虑;重新编码可以改变质量、大小、颜色、时间和元数据。即使重新混合也会改变结构,而重新编码也会改变质量、大小、时间、颜色和元数据;两者都值得明确批准。在进行任何操作之前请保留原件。

要点:了解您要保存的内容 — 直接媒体下载器如何完全按照所提供的方式保存文件,而无需重新编码

在指责传输之前了解收到的内容。比较预期的源、字节大小、MIME 标签、文件名和检查器输出,然后选择允许的兼容播放器或有意的转换工作流程。

ToolAcre 的窄保真度很有用:它不会通过重新编码引入新的编解码器问题。它也不能仅仅因为 GET 成功而修复不受支持或损坏的源。将这些阶段分开可以使故障排除变得可审核:首先传输,其次检查,并且仅在明确的交付要求下进行转换。将传输、检查和转换分开会导致失败,并防止下载者默默地更改可交付成果。