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

时间:2016-02-03 12:59:34

标签: media mp4 media-source

媒体资源扩展程序( MSE )需要在浏览器中播放零碎的mp4。

1 个答案:

答案 0 :(得分:94)

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

Box At aka Atoms

所有MP4文件都使用包含boxes aka atoms的面向对象格式。

您可以使用在线工具(例如MP4 Parser)或使用Windows MP4 Explorer在线查看MP4中的复选框。让我们将普通MP4与碎片化MP4进行比较:

非碎片化MP4

此屏幕截图(来自MP4 Parser)显示的是一个没有碎片的MP4,而且只有一个巨大的mdat(电影数据)框。

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

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

碎片MP4

此屏幕截图显示了已使用onDemand个人资料MP4Box进行细分的已分段MP4。

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

您会注意到sidx和一系列moof+mdat框。 sidx是细分索引,存储moof + mdat细分的精确字节范围位置的元数据。

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

重要的是,每个片段都是按照您选择的固定间隔(即每5秒)创建的,因此片段可以跨不同比特率的文件进行时间对齐,从而可以在播放期间轻松调整比特率。

相关问题