每当我尝试在服务器上查看视频文件时,我都会在Safari,Chrome中的iOS上收到此错误。
我使用的是blob服务器,然后是Apache服务器,所以我不确定问题是什么。但是,当我只使用Apache时,我确实得到了这个错误但是我也有了视频渲染。
然而,当我使用我的服务器渲染它时,这是行不通的。有人知道为什么吗?这些视频在其他设备上运行良好,如果只通过Apache访问,浏览器也能正常工作。
答案 0 :(得分:16)
这个问题的解决方案只是解决方法。原因是blob服务器不是流媒体服务器。 iOS设备希望视频以小块的形式到达。例如,流媒体服务器能够做到这一点。但是,blob服务器只是将视频作为blob传递,这不是iOS设备所期望的。有些浏览器足够聪明,可以处理这个,但其他浏
我解决这个问题的方法是将blob服务器外部的视频文件添加到项目中的文件夹中,然后通过Apache服务器呈现它,而不是通过我们使用的实际blob服务器提供它。我希望这有帮助。
答案 1 :(得分:2)
我们在这里遇到了类似的错误。我认为这可能是流问题,因为我们的视频托管在Azure上的Blob存储中。设置用于流式传输的媒体服务后,视频仍然无法正常播放。事实证明,导致该错误的原因是使用Service Worker的Safari。以下是对我们发现的内容的进一步解释:
Safari首先发送一个针对视频标签的字节范围请求,该请求需要206响应。但是,如果您使用Service worker,则响应会返回200,并且Safari似乎不知道如何处理。 我们的解决方案是排除在Safari中使用Service Worker。
我们是通过使用Macbook上Safari调试器的“网络”标签来解决此问题的,以解决我们在iPad上看到的问题。随附屏幕截图,供比较/参考。左侧选项卡显示默认情况下呼叫的外观。右侧标签显示了使用Service Worker时将看到的内容。
答案 2 :(得分:1)
在我们的例子中,我们为blob资产创建了一个URL模式,然后在该URL模式定义页面中设置了标题,该页面发回了mime类型的' video / mp4'。这应该指示浏览器将二进制流视为分块,这反过来意味着我们不需要在开始播放之前下载整个内容。
答案 3 :(得分:0)
一些mp4视频也出现了此错误。原来对我来说这不是服务器问题,而是视频编码问题。
问题
“ moov atom”需要放置在视频文件的前面。它用作视频的目录。 html流必须首先读取该“ moov atom”,否则它将无法在某些设备上播放。
修复
要修复,我使用handbrake对视频进行了转码。启用“网络优化”,也可以启用零延迟和“快速解码”(在“视频”标签中找到)。
答案 4 :(得分:0)
@ŠimeVidas,关于:
我们的解决方案是排除在Safari中使用Service Worker。
如https://bugs.webkit.org/show_bug.cgi?id=184447中所指出,当前的解决方法是使用Request.destination绕过服务工作者进行媒体加载。
答案 5 :(得分:0)
Google Cloud Platform解决方案
这个问题让我很头疼,所以,如果有人在部署到Google Cloud Platform时遇到此问题,我只想在这里添加我的特定解决方案。
当尝试在Safari中加载MP4视频时,出现了相同的错误:
“无法加载资源,插件已处理加载”
阻止播放视频。
仍然,我想尝试将所有内容保留在Google Cloud中,因此我为该网站创建了一个存储桶,并在其中添加了视频。
当然,尝试从主站点的存储URL中检索视频会导致CORS错误。 幸运的是,您可以在存储桶上轻松配置CORS:
Configuring cross-origin resource sharing (CORS)
部署完该配置后,我便能够在Safari中检索并加载网站上的视频,而不会出现“插件处理后加载”错误。
答案 6 :(得分:0)
将以下代码行添加到您的.htaccess中(位于WordPress安装的根目录中):
SetEnvIfNoCase Request_URI .(?:mp4)$ no-gzip dont-vary
以下屏幕截图是新的完整.htaccess