为什么 HTML5 具有非常大的 h.264 编码 mp4 的视频(带有 +faststart,即开头的元数据)需要很长时间才能加载?
Why does HTML5 video with very large h.264 encoded mp4 (with +faststart, ie metadata at beginning), take ages to load?
视频是用 ffmpeg 渲染的,添加了 "faststart" 标志,这意味着元数据应该在文件的开头,服务器似乎在正确处理部分内容请求,那么为什么需要在播放器启用并可以播放视频之前下载了这么多视频?我正在 Google Chrome.
中测试它
播放器启用后,我可以立即搜索视频中的各个点,并查看正在发出的新的部分内容请求。
这是视频的 link:http://iptv.la1tv.co.uk/unibrass.mp4
这是一个带有视频标签的 jsbin:https://jsbin.com/rahewidoru。需要几分钟,但加载后确实有效。
有什么建议吗?
我知道还有其他使用块的方法,例如 HLS 和 dash,但我想知道为什么它不能以这种方式工作,因为我找不到任何地方提供它为什么不工作的原因'效果不好。
问题出在视频的时长上,我不知道视频的确切时长,但我可以根据视频大小估算。
原因是视频播放器实现读取了视频周围的一些片断以获取一些信息信息用于播放和转发并确保header格式正确。
因此,使用 HLS o DASH 等流式传输协议非常重要,因为时间戳的情况不同并且针对流式传输进行了优化。
看来这就是 h.264 的工作原理。元数据包含指向文件中所有关键帧的指针,因此随着文件持续时间的增加,关键帧的数量也会增加,因此开始时元数据的大小也会增加。
更多信息请访问 http://www.adobe.com/devnet/video/articles/mp4_movie_atom.html
如果有人可以就 h.264 编码的 mp4 中的元数据包含哪些内容提供更深入的答案,请告诉我,我会将其标记为答案,或者只是编辑它。
视频是用 ffmpeg 渲染的,添加了 "faststart" 标志,这意味着元数据应该在文件的开头,服务器似乎在正确处理部分内容请求,那么为什么需要在播放器启用并可以播放视频之前下载了这么多视频?我正在 Google Chrome.
中测试它播放器启用后,我可以立即搜索视频中的各个点,并查看正在发出的新的部分内容请求。
这是视频的 link:http://iptv.la1tv.co.uk/unibrass.mp4
这是一个带有视频标签的 jsbin:https://jsbin.com/rahewidoru。需要几分钟,但加载后确实有效。
有什么建议吗?
我知道还有其他使用块的方法,例如 HLS 和 dash,但我想知道为什么它不能以这种方式工作,因为我找不到任何地方提供它为什么不工作的原因'效果不好。
问题出在视频的时长上,我不知道视频的确切时长,但我可以根据视频大小估算。
原因是视频播放器实现读取了视频周围的一些片断以获取一些信息信息用于播放和转发并确保header格式正确。
因此,使用 HLS o DASH 等流式传输协议非常重要,因为时间戳的情况不同并且针对流式传输进行了优化。
看来这就是 h.264 的工作原理。元数据包含指向文件中所有关键帧的指针,因此随着文件持续时间的增加,关键帧的数量也会增加,因此开始时元数据的大小也会增加。
更多信息请访问 http://www.adobe.com/devnet/video/articles/mp4_movie_atom.html
如果有人可以就 h.264 编码的 mp4 中的元数据包含哪些内容提供更深入的答案,请告诉我,我会将其标记为答案,或者只是编辑它。