我需要使用视频标签在网络上提供超过3GB的视频 . 加载页面时,媒体元素需要很长时间才能接收'loadedmetadata event' .
我发现moov盒的大小太大(33MB) . 因此,当我使用'ffmpeg'的'empty_moov + frag_keyframe'选项对其进行重新编码时,还需要更长时间才能从Chrome中的'Inspector - Network'标签中获取所有碎片信息 .
使用html5视频标签播放'fragmented mp4'时有没有办法加载 speed up ?
1 回答
您没有提到将视频传送到浏览器所使用的协议,但是碎片化的MP4通常带有ABR(自适应比特率)流协议 . 在编写本文时,最常用的ABR协议可能是HLS和DASH .
使用ABR允许客户端以较低的比特率启动,从而加快初始回放速度 - 然后可以升级到不同的质量级别,以达到特定设备和当前网络条件的最佳质量 .
您可以通过大型流媒体服务看到这种效果,其中视频质量在启动时会明显降低,然后在10-20秒后提高 . 在这个答案中查看更多信息:
Bowsers通常不支持ABR本身的HTML5标记 - 因此,您通常会使用基于Javascript的播放器,该播放器使用HTML5 MSE(媒体源扩展)机制来支持ABR . 您可以看到开源示例,例如:
http://dashif.org/reference/players/javascript/1.3.0/samples/dash-if-reference-player/index.html
https://shaka-player-demo.appspot.com/demo/#asset=//storage.googleapis.com/shaka-demo-assets/angel-one/dash.mpd;lang=en-US