Fragmented mp4(fMP4) 究竟是什么?它和普通的mp4有什么不同?
What exactly is Fragmented mp4(fMP4)? How is it different from normal mp4?
媒体源扩展 (MSE) 需要碎片化的 mp4 才能在浏览器中播放。
分段的 MP4 包含一系列片段,如果您的服务器支持 byte-range 请求,则可以单独请求这些片段。
盒子又名原子
所有 MP4 文件都使用面向对象的格式,其中包含 boxes aka atoms.
您可以使用 MP4 Parser or if you're using Windows, MP4 Explorer 等在线工具查看 MP4 中框的表示。让我们比较一下普通的 MP4 和碎片化的 MP4:
Non-Fragmented MP4
此屏幕截图(来自 MP4 Parser)显示了一个未被分割的 MP4,非常简单,只有一个巨大的 mdat
(电影数据)框。
如果我们正在构建一个支持自适应比特率的视频播放器,我们可能需要知道 0.5Mbps 和 1Mbps 文件中 10 秒标记的字节位置,以便在两个文件之间切换视频源那一刻。在每个文件中的一个大 mdat
中确定这个确切的字节位置并非易事。
MP4 碎片
此屏幕截图显示了使用 MP4Box 和 onDemand
配置文件分割的片段 MP4。
您会注意到 sidx
和一系列 moof
+mdat
框。 sidx
是段索引,存储 moof
+mdat
段的精确字节范围位置的元数据。
基本上,您可以独立加载 sidx
(其 byte-range 将在随附的 .mpd
媒体呈现描述符文件中定义),然后选择您想要的片段随后加载并添加到 MSE SourceBuffer.
重要的是,每个片段都是按照您选择的固定时间间隔(即每 5 秒)创建的,因此片段可以在不同比特率的文件之间进行时间对齐,从而可以在播放过程中轻松调整比特率。
媒体源扩展 (MSE) 需要碎片化的 mp4 才能在浏览器中播放。
分段的 MP4 包含一系列片段,如果您的服务器支持 byte-range 请求,则可以单独请求这些片段。
盒子又名原子
所有 MP4 文件都使用面向对象的格式,其中包含 boxes aka atoms.
您可以使用 MP4 Parser or if you're using Windows, MP4 Explorer 等在线工具查看 MP4 中框的表示。让我们比较一下普通的 MP4 和碎片化的 MP4:
Non-Fragmented MP4
此屏幕截图(来自 MP4 Parser)显示了一个未被分割的 MP4,非常简单,只有一个巨大的 mdat
(电影数据)框。
如果我们正在构建一个支持自适应比特率的视频播放器,我们可能需要知道 0.5Mbps 和 1Mbps 文件中 10 秒标记的字节位置,以便在两个文件之间切换视频源那一刻。在每个文件中的一个大 mdat
中确定这个确切的字节位置并非易事。
MP4 碎片
此屏幕截图显示了使用 MP4Box 和 onDemand
配置文件分割的片段 MP4。
您会注意到 sidx
和一系列 moof
+mdat
框。 sidx
是段索引,存储 moof
+mdat
段的精确字节范围位置的元数据。
基本上,您可以独立加载 sidx
(其 byte-range 将在随附的 .mpd
媒体呈现描述符文件中定义),然后选择您想要的片段随后加载并添加到 MSE SourceBuffer.
重要的是,每个片段都是按照您选择的固定时间间隔(即每 5 秒)创建的,因此片段可以在不同比特率的文件之间进行时间对齐,从而可以在播放过程中轻松调整比特率。