为何moov头在尾部的mp4可以快速播放、拖动

用户反馈用chrome直接播MP4,可以快速播放和拖拽,而使用Flash播放器要等很久才可以播放。

分析了一下:

一、关于chrome的快速播放和拖拽

1、chrome使用H5的video标签来播放

2、chrome很智能,如果读取MP4文件,发现moov box不在文件前部,会直接读取MP4的文件尾部,加载moov box

3、拖拽时,chrome根据moov box得到的关键帧的字节偏移量,采用range请求来请求

二、关于Flash

1、Flash如果读取MP4文件,发现moov box不在文件前部,不会直接读取MP4的文件尾部去寻找moov box,所以Flash要等文件全部下载完,取到文件尾部的moov头,才可以正常播放。


PS:俺们的流媒体服务器,即使moov在文件尾部 也会先发moov头出去给CDN或用户,相当于CDN回源,或者用户回源请求到的MP4,已经是moov头在文件头部的了,虽然 这个时候 源站存储的还是moov头在文件尾部的MP4。


你可能感兴趣的:(为何moov头在尾部的mp4可以快速播放、拖动)