Tags
multimedia
Created
Dec 30, 2018 11:57 AM
https://juejin.im/post/5dd119b5f265da0bf350d19b
MP4文件中的所有数据都装在 box(QuickTime中为atom)中,也就是说 MP4 文件由若干个 box 组成,每个 box 有类型和长度,可以将 box 理解为一个数据对象块。box 中可以包含另一个box,这种 box 称为 container box。
https://www.zhangxinxu.com/wordpress/2018/12/video-moov-box/
读取 MOOV 过程
浏览器直接发起 HTTP MP4 请求,读取响应 body 的开头,如果发现 moov 在开头,就接着往下读 mdat。如果发现开头没有,先读到 mdat,立马 RESET 这个连接,节省流量,通过 Range 头读取文件末尾数据,因为前面一个 HTTP 请求已经获取到了 Content-Length ,知道了 MP4 文件的整个大小,通过 Range 头读取部分文件尾部数据也是可以读取到的。
Fragmented MP4: fragment 由 moof 和 mdat 组成