无法在纯 html5 视频上播放零散的 mp4

Fragmented mp4 cannot be played on pure html5 video

我需要使用视频标签在网络上提供超过 3GB 的视频。 加载页面时,媒体元素需要很长时间才能收到 'loadedmetadata event'.

我发现 moov 框 的大小太大 (33MB)。 所以当我用 'ffmpeg''empty_moov + frag_keyframe' 选项重新编码时,但它也需要更长的时间来获取所有Chrome'Inspector - Network' 选项卡中的零散信息。

在播放 'fragmented mp4' 和 html5 视频标签时,有没有办法加快 加载速度?

您没有提到您使用什么协议将视频传送到浏览器,但分段的 MP4 通常使用 ABR(自适应比特率)流协议传送。在撰写本文时最常用的 ABR 协议可能是 HLS 和 DASH。

使用 ABR 允许客户端以较低的比特率开始,从而加快初始播放速度 - 然后它可以逐步提高不同的质量级别,以达到特定设备和当前网络条件下的最佳质量。

您可以在大型流媒体服务中看到这种效果,其中视频质量在启动时会明显降低,然后在 10-20 秒后改善。在此答案中查看更多信息:

Bowsers 通常不支持带有 HTML5 标签的 ABR - 因此您通常会使用基于 Javascript 的播放器,该播放器使用 HTML5 MSE(媒体源扩展) 机制来支持 ABR。可以查看开源示例如: