最新的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在网络标签下以红色突出显示:
根据要求&amp;响应(右侧)它说它被取消了。为什么呢?
在请求标题下,我看到:Range bytes=0-1
。看起来很奇怪。虽然我卷曲了这个资源并且看起来很好,但可以完全下载。
尝试了许多不同的变化,都失败了。不确定它是否是一个nginx问题,我的JS代码或Safari中的错误。任何线索都非常受欢迎。
很容易重现:
答案 0 :(得分:0)
----最终解决方案----
通过在express.js控制器代码中使用以下来解决此问题:
res.sendFile(file, {
lastModified: false,
acceptRanges: true,
cacheControl: false
}, function (err) {
if (err && err.code !== 'ECONNRESET') {
next(err)
}
})
答案 1 :(得分:-1)
添加X-pad: avoid browser bug
响应标头可以解决我的问题。