在DASH(自适应流媒体传输)中推荐使用的是fragmented Mp4(fMp4)格式,那么这种格式和传统的mp4格式有什么区别呢?
先说结论:在fMp4格式中包含一系列的segments(moof+mdat的组合),这些segments可以被独立的request(利用byte-range request),这有利于在不同质量级别的码流之间做码率切换操作
介绍一个可以输出mp4 box信息的工具:MP4dump 下面我们分别dump出一个regular mp4和一个fmp4的box信息,化简如下
regular mp4
[ftyp] size=8+16
[moov] size=8+9149
[mdat] size=8+17923439```
如果我们要在两个码流之间做码率切换,就需要找到两个码流中对应时间点的byte position,然而这时候我们只有一个巨大的mdat box,要在这里面找到一个具体的byte position无疑是复杂的。而且,在regular mp4中,有时moov会在巨大的mdat box之后,这也会影响起播的速度。
fmp4
[ftyp] size=8&