亚马逊 S3/Cloudfront 视频解码失败

Amazon S3/Cloudfront Video Decoding Failed

我在通过 Amazon S3 + Cloudfront 传送静态 HTML5 视频文件时遇到问题。基本上,视频播放正常,但完全忽略了视频播放器中的任何循环功能。我已将播放器元素循环属性设置为 true。而且我还在 Javascript 中设置为备份。 (见下文)。使用本地主机一切正常,但是当我从 AWS 提供服务时,我不断收到错误 net::ERR_CONTENT_DECODING_FAILED

我同时使用 .webm 和 .mp4,并且文件在 AWS 中具有适当的 headers。 Content-Type video/webmContent-Type video/mp4

我注意到在 S3 上所有视频都默认设置了一次 gzip。删除 gzip header 后,视频甚至不再播放。所以我要么没有视频,要么没有响应的视频有解码错误。

有什么想法吗?

if (typeof player.loop === 'boolean'){
    player.loop = true;
  }

  else{
    player.addEventListener('ended', function(){
      this.currentTime = 0;
      this.play();
    }, false);
  }

我遇到了完全相同的问题,解决方法也很简单。就我而言,我只是删除了将视频资产部署到 S3/Cloudfront 的 gzip 任务,它解决了问题。

事实上,问题与资源 header Accept-Encoding 和响应 header Content-Encoding 有关,您可以在下面的文档中找到更多详细信息:

http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/ServingCompressedFiles.html#CompressedS3

我建议在单独的选项卡中打开视频,并检查上面提到的 header,很容易看出问题所在。