首页 文章

Safari无法加载MP4视频

提问于
浏览
3

最新的Safari v11.0无法播放已通过JavaScript动态设置的MP4视频 . 但这在Chrome,Edge和FF上运行良好 .

我的代码将 src 元素设置为指向MP4资源,如下所示:

<video class="replay" autoplay="true" autostart="true" autobuffer="true" playsinline="true" webkit-playsinline="webkit-playsinline" controls="controls" style="" preload="auto" muted="true">
    <source src="https://videomail.io/videomail/11e7-ad5a-4b14b680-a354-934ec5b49c33/preview/type/mp4/x-videomail-site-name/videomail.io/videomail.mp4?1507598907103" type="video/mp4">
</video>

问题是Safari在网络选项卡下以红色突出显示:

enter image description here

在Request&Response(右侧)下,它表示已取消 . 为什么?

在请求 Headers 下,我看到: Range bytes=0-1 . 看起来很奇怪 . 虽然我卷曲了资源并且看起来很好,但可以完全下载 .

尝试了许多不同的变化,都失败了 . 不确定它是否是一个nginx问题,我的JS代码或Safari中的错误 . 任何线索都非常受欢迎 .

很容易重现:

  • 在Safari中,转到www.videomail.io

  • 开始录制视频

  • 点击预览,没有视频出现(在Chrome上运行正常)

2 回答

  • 0

    ----最终解决方案----

    通过在express.js控制器代码中使用以下来修复此问题:

    res.sendFile(file, {
        lastModified: false,
        acceptRanges: true,
        cacheControl: false
      }, function (err) {
        if (err && err.code !== 'ECONNRESET') {
          next(err)
        }
      })
    
  • -1

    添加 X-pad: avoid browser bug 响应标头为我解决了这个问题 .

相关问题