【问题标题】:Play inline html5 video smoothly by preloading video entirely通过完全预加载视频流畅播放内嵌 html5 视频
【发布时间】:2019-12-02 10:20:46
【问题描述】:

我有一个 45 秒的视频,我可以将其压缩为 4 Mo。我希望视频能够流畅地播放并具有自动播放功能,但只要存在海报图片就不需要快速启动。因此,一旦它完全加载,它应该会自动播放。 我找到了这段 javascript 代码,但我遇到了错误,我不明白为什么。

<div class="video-container">
<video id="myvideo" controls autoplay muted poster="image.jpg" playsinline style="width: 100% !important;">
</video> </div>

<script type="text/javascript">
      var req = new XMLHttpRequest();
req.open('GET', 'example.com/wp-content/uploads/2019/07/video.mp4', true);
req.responseType = 'blob';
req.onload = function() {
// Onload is triggered even on 404
// so we need to check the status code
if (this.status === 200) {
  var videoBlob = this.response;
  var vid = URL.createObjectURL(videoBlob); // IE10+
  // Video is now downloaded
  // and we can set it as source on the video element
  video.src = vid;
}
}
req.onerror = function() {
// Error
}
req.send();
document.getElementById("myvideo").src = vid; 
</script>

我收到视频未在线定义的错误 video.src = 视频; 并随后上线 document.getElementById("myvideo").src = vid;

在控制台中,视频已正确计入页面,上传时间在 1 到 3 秒之间。

【问题讨论】:

  • 看看stackoverflow.com/questions/18251632/… ...应该可以解决您的问题
  • 这段代码确实有效,所以谢谢,没有更多错误,不幸的是视频仍然不稳定,特别是在 Firefox Mac 中
  • 你能分享一个示例视频的链接吗...可能是编码问题而不是加载问题
  • 这是链接:ateliermanonpascual.com/collection-couture-with-video 它是用 H264 编码的
  • FWIW 无论你在做什么,现在在 macOS 上的 Firefox 中对我来说都不错。建议(如果您还没有这样做)将 MOOV 原子重新定位到文件的开头以帮助查找

标签: javascript html5-video loading smoothing


【解决方案1】:

实现流畅播放的方法有很多种,我运气好的方法是

    <video id="video" preload="auto" src="file.mp4" controls></video>

将 preload 属性设置为 auto 表示浏览器可以缓存足够的数据,以便在不需要停止进一步缓冲的情况下完成播放。

上面的例子只预加载了几秒钟,这样视频就可以流畅播放而不会停止缓冲,如果你想在播放前预加载整个视频,你可以参考这个例子 sn-p

  <video id="video" controls></video>

  <script>
    // Later on, after some condition has been met, set video source to the
    // preloaded video URL.
    video.src = 'https://cdn.com/small-file.mp4';
    video.play().then(_ => {
    // If preloaded video URL was already cached, playback started 
    //immediately.
     });
    </script>

来源:https://developers.google.com/web/fundamentals/media/fast-playback-with-video-preload

【讨论】:

  • 使用第二种预加载整个视频的方法,我也得到了很好的结果。在 Windows Chrome、Edge、Opera 和 Firefox 上,视频播放流畅。在 MacOs Safari 上第二次正确播放,Chrome 没问题,我唯一的问题是 Firefox。如您的来源所示,我在视频通话之前添加了这一行 cdn.com/small-file.mp4">
猜你喜欢
  • 1970-01-01
  • 2020-07-24
  • 1970-01-01
  • 2011-04-05
  • 1970-01-01
  • 2018-03-21
  • 2017-04-18
  • 2020-09-13
  • 1970-01-01
相关资源
最近更新 更多