【问题标题】:HTML5 video tag optimisationHTML5 视频标签优化
【发布时间】:2018-04-21 01:25:27
【问题描述】:

我有 Angular 应用程序,它是使用 node/Express 服务器构建和服务的。

我使用用户可以观看的视频

<video width="100%" height="344" controls controlsList="nodownload" preload="metadata" autoplay>
   <source src="/assets/video/digital.mp4" type="video/mp4">            
</video>

它工作正常。但在缓慢的互联网上,它的播放速度非常慢。我想知道在这里可以做些什么,这样用户即使在网速慢的情况下也不会感到沮丧。

【问题讨论】:

  • 降低视频质量?
  • 哇...视频 digital.mp4 是固定的...是页面上唯一的视频吗?
  • @Rajaji 是的,它是单个视频 o
  • @FedericoklezCulloca 是的,但除此之外。

标签: javascript css html angular html5-video


【解决方案1】:

preload="metadata" 尝试 preload:"auto"

auto:表示可以下载整个视频文件,即使 用户不应该使用它。

但同样如建议的那样,预加载属性并不总是可靠的..

in this blog 提到了 4 个解决方案,其中最可靠的是

解决方案 #4,ajax 和 bloburl(有效)

var req = new XMLHttpRequest();
req.open('GET', '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();

【讨论】:

  • 视频大约 90mb 所以我不认为,在这里加载一次是个好主意,它需要这么多时间
  • 它的好处是异步...您可以在正文加载时启动 ajax 调用,也可以在应用程序启动时启动 ..并且还启用 cache 这样视频将在服务器上只下载一次
  • 从 blob 播放视频非常慢,我不知道为什么
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-08-01
  • 2011-07-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-10
  • 2017-03-22
相关资源
最近更新 更多