什么是破碎的 mp4(fMP4) ? 它与普通的 mp4有什么不同?

媒体源扩展(MSE)需要在浏览器中播放片段化的 mp4。

73070 次浏览

片段 MP4包含一系列片段,如果服务器支持字节范围请求,可以单独请求这些片段。

盒子又名原子

所有 MP4文件都使用包含 也就是原子的面向对象格式。

您可以使用在线工具(如 MP4解析器)或者如果您使用 Windows,则使用 MP4探索者查看 MP4中框的表示形式。让我们比较一下普通的 MP4和支离破碎的 MP4:

非破碎 MP4

这个屏幕截图(从 MP4解析器)显示了一个 MP4没有被碎片,相当简单的有一个大型 mdat(电影数据)框。

Representation of boxes within a normal, non fragmented MP4, generated using MP4 Parser

如果我们正在构建一个支持自适应比特率的视频播放器,我们可能需要知道0.5 Mbps 和1Mbps 文件中10秒标记的字节位置,以便在此时在两个文件之间切换视频源。在每个相应文件中的一个大量 mdat中确定这个确切的字节位置并非易事。

破碎的 MP4

这个屏幕截图显示了一个破碎的 MP4,它已经被分割使用 MP4BoxonDemand配置文件。

Representation of boxes within a fragmented MP4, generated using MP4 Parser

你会注意到 sidxABC1 + mdat系列的盒子。sidx是段索引,存储 moof + mdat段的精确字节范围位置的元数据。

基本上,您可以独立地加载 sidx(它的字节范围将在随附的 .mpd媒体演示描述符文件中定义) ,然后选择您希望随后加载并添加到 MSE SourceBuffer的片段。

重要的是,每个部分是按照您选择的固定间隔创建的(即。每5秒一次) ,因此这些段可以跨不同比特率的文件进行时间对齐,这使得在播放过程中可以很容易地调整比特率。

媒体文件格式

媒体数据流以容器格式包装 包括媒体的物理数据,但也包括需要-的元数据 例如,它向视频播放器发出编解码器信号 在视频流中有两种主要格式 用于存储和显示多媒体内容的 2传输流(MPEG-2TS)[25]和 ISO 基本媒体文件格式 (ISOBMFF)[24](MP4和片段化 MP4)。

MPEG-2传输流由[25]指定,设计用于 通过卫星网络播放视频。然而,苹果采用了 它的自适应流协议使其成为一个重要的格式 MPEG-2 TS 音频、视频和字幕流是多路复用的。 MP4和片段化的 MP4(fMP4)都是 MPEG-4的一部分 包括 ISOBMFF 的12个标准。 MP4是最著名的多媒体 容器格式,并在不同的操作系统中得到广泛支持 MP4视频文件的结构如图2.2 a 所示。 如图所示,MP4由不同的盒子组成,每个盒子都有不同的功能- 这些盒子是 MP4中每个容器的基本组成部分。

例如,文件类型框(“ ftype”)指定兼容的品牌(spe- MP4文件有一个 Movie Box (“ mov”) ,其中包含 对计时非常重要的媒体文件和示例表的元数据 并为媒体样本建立索引(“ stbl”)。还有一个媒体数据盒 (’mdat’) ,其中包含相应的样本 如图2.2 b 所示,媒体样本通过使用 Movie 进行交错 片段框(“ moof”) ,其中包含特定的 片段(mdat 框)。

enter image description here

档号: https://repository.tudelft.nl/islandora/object/uuid%3Ae06cde4c-1514-4a8d-90be-7e10eee5aac1