每次我尝试在服务器上查看视频文件时,我都会在Safari,Chrome中的iOS上遇到此错误。我使用的是blob服务器,然后是Apache服务器,所以我不确定问题是什么。然而,当我只使用Apache时,我确实得到了这个错误,但我也有视频渲染。然而,当我使用我的服务器渲染这个时,这不起作用。有人知道为什么吗?视频在其他设备上工作正常,如果只通过Apache访问,在浏览器中也工作正常。
olqngx591#
这个问题的解决方案只是一个变通方案。原因是blob服务器不是流媒体服务器。iOS设备希望视频以小块的方式到达。例如,流媒体服务器能够做到这一点。然而,blob服务器只是将视频作为blob处理,这不是iOS设备所期望的。一些浏览器足够智能,可以处理这个问题,但其他浏览器则不行。我解决这个问题的方法是将视频文件添加到项目内的文件夹中的blob服务器之外,然后通过Apache服务器渲染,而不是通过我们使用的实际blob服务器提供。我希望这能有所帮助。
ilmyapht2#
我也得到这个错误的一些mp4视频.原来这不是一个服务器的问题,我这是一个视频编码问题.
问题
需要在视频文件的前面放置一个“moov atom”。它可以作为视频的目录。这个“moov atom”必须首先被读取以进行html流传输,否则它将无法在某些设备上播放。
修复
为了解决这个问题,我使用了handbrake对我的视频进行转码。打开“网络优化”,同时打开零延迟和“快速解码”可能会有帮助(在视频标签中找到)。
zi8p0yeb3#
我们在这里得到了一个类似的错误。我认为这可能是流问题,因为我们的视频托管在Azure上的blob存储中。在设置流媒体服务后,视频仍然不起作用。事实证明,我们的错误原因是Safari使用Service Worker。下面是我们发现的一些进一步解释:Safari首先发送一个视频标签的字节范围请求,该请求需要206响应。但是,如果您使用Service Worker,则响应返回200,并且Safari似乎不知道如何处理此问题。我们的解决方案是排除使用Service Worker for Safari。我们通过在Macbook上使用Safari调试器的网络选项卡来解决我们在iPad上看到的问题,从而发现了这一点。附件是一个用于比较/参考的屏幕截图。左侧选项卡显示了调用在默认情况下应该是什么样子。右侧选项卡显示了如果使用Service Worker会看到什么。
9bfwbjaz4#
将以下代码行添加到.htaccess(位于WordPress安装的根目录):
SetEnvIfNoCase Request_URI .(?:mp4)$ no-gzip dont-vary
下面的屏幕截图是新的完整的.htaccess
参考:https://clickshepherd.com/blog/solved-elegant-themes-divi-and-cloudflare-mp4-media-error-formats-not-supported-or-sources-not-found/
ac1kyiln5#
在我们的例子中,我们为blob资产创建了一个URL模式,然后在URL模式定义页面中设置header,该页面发送回一个mime类型'video/mp4'。这应该指示浏览器将二进制流视为分块,这反过来意味着我们不需要在开始播放之前下载整个内容。
vu8f3i0k6#
谷歌云平台解决方案
这个问题让我很头疼,所以我只想在这里添加我的具体解决方案,如果其他人在部署到Google Cloud Platform时遇到这个问题。在Safari中加载MP4视频时,我遇到了同样的错误:加载资源失败,插件已处理加载所以视频无法播放。尽管如此,我还是想尝试将所有内容都保存在Google Cloud中,所以我为该网站创建了一个存储桶,并在那里添加了视频。当然,尝试从主站点的存储URL检索视频会导致CORS错误。幸运的是,您可以在存储桶上轻松配置CORS:Configuring cross-origin resource sharing (CORS)一旦配置被部署,我就能够在Safari中检索和加载网站上的视频,而不会出现“插件处理加载”错误。
eimct9ow7#
我看到错误“加载资源失败”,虽然这是原因,为什么我的视频不播放.结果,我的视频缺少hvc1标签。当我添加它时-它们播放得很好。在我的案例中,问题是H256 HEVC视频,但在您的案例中,一些其他编码/标记问题可能是原因。在我的情况下,问题是固定的ffmpeg:
hvc1
ffmpeg -i input.mp4 -tag:v hvc1 -acodec copy -c:v copy -movflags faststart out.mp4
8cdiaqws8#
我有同样的问题,没有列出的解决方案为我工作.我在网站上显示视频从S3,但他们没有在iOS上播放,并给出上面列出的问题,但其中一个视频是工作没有问题.我试图添加-tag:v hvc1太多,但它没有工作.我通过FFmpeg比较两个视频,发现这是一个编码问题.我通过FFmpeg生成视频,并在生成视频时添加-brand mp42。简而言之,这很可能是由于不同的编码格式,尽管两者都是video/mp4类型。
S3
iOS
-tag:v hvc1
FFmpeg
-brand mp42
video/mp4
8条答案
按热度按时间olqngx591#
这个问题的解决方案只是一个变通方案。原因是blob服务器不是流媒体服务器。iOS设备希望视频以小块的方式到达。例如,流媒体服务器能够做到这一点。然而,blob服务器只是将视频作为blob处理,这不是iOS设备所期望的。一些浏览器足够智能,可以处理这个问题,但其他浏览器则不行。
我解决这个问题的方法是将视频文件添加到项目内的文件夹中的blob服务器之外,然后通过Apache服务器渲染,而不是通过我们使用的实际blob服务器提供。我希望这能有所帮助。
ilmyapht2#
我也得到这个错误的一些mp4视频.原来这不是一个服务器的问题,我这是一个视频编码问题.
问题
需要在视频文件的前面放置一个“moov atom”。它可以作为视频的目录。这个“moov atom”必须首先被读取以进行html流传输,否则它将无法在某些设备上播放。
修复
为了解决这个问题,我使用了handbrake对我的视频进行转码。打开“网络优化”,同时打开零延迟和“快速解码”可能会有帮助(在视频标签中找到)。
zi8p0yeb3#
我们在这里得到了一个类似的错误。我认为这可能是流问题,因为我们的视频托管在Azure上的blob存储中。在设置流媒体服务后,视频仍然不起作用。事实证明,我们的错误原因是Safari使用Service Worker。下面是我们发现的一些进一步解释:
Safari首先发送一个视频标签的字节范围请求,该请求需要206响应。但是,如果您使用Service Worker,则响应返回200,并且Safari似乎不知道如何处理此问题。我们的解决方案是排除使用Service Worker for Safari。
我们通过在Macbook上使用Safari调试器的网络选项卡来解决我们在iPad上看到的问题,从而发现了这一点。附件是一个用于比较/参考的屏幕截图。左侧选项卡显示了调用在默认情况下应该是什么样子。右侧选项卡显示了如果使用Service Worker会看到什么。
9bfwbjaz4#
将以下代码行添加到.htaccess(位于WordPress安装的根目录):
下面的屏幕截图是新的完整的.htaccess
参考:https://clickshepherd.com/blog/solved-elegant-themes-divi-and-cloudflare-mp4-media-error-formats-not-supported-or-sources-not-found/
ac1kyiln5#
在我们的例子中,我们为blob资产创建了一个URL模式,然后在URL模式定义页面中设置header,该页面发送回一个mime类型'video/mp4'。这应该指示浏览器将二进制流视为分块,这反过来意味着我们不需要在开始播放之前下载整个内容。
vu8f3i0k6#
谷歌云平台解决方案
这个问题让我很头疼,所以我只想在这里添加我的具体解决方案,如果其他人在部署到Google Cloud Platform时遇到这个问题。
在Safari中加载MP4视频时,我遇到了同样的错误:
加载资源失败,插件已处理加载
所以视频无法播放。
尽管如此,我还是想尝试将所有内容都保存在Google Cloud中,所以我为该网站创建了一个存储桶,并在那里添加了视频。
当然,尝试从主站点的存储URL检索视频会导致CORS错误。幸运的是,您可以在存储桶上轻松配置CORS:
Configuring cross-origin resource sharing (CORS)
一旦配置被部署,我就能够在Safari中检索和加载网站上的视频,而不会出现“插件处理加载”错误。
eimct9ow7#
我看到错误“加载资源失败”,虽然这是原因,为什么我的视频不播放.
结果,我的视频缺少
hvc1
标签。当我添加它时-它们播放得很好。在我的案例中,问题是H256 HEVC视频,但在您的案例中,一些其他编码/标记问题可能是原因。
在我的情况下,问题是固定的ffmpeg:
8cdiaqws8#
我有同样的问题,没有列出的解决方案为我工作.我在网站上显示视频从
S3
,但他们没有在iOS
上播放,并给出上面列出的问题,但其中一个视频是工作没有问题.我试图添加-tag:v hvc1
太多,但它没有工作.我通过FFmpeg
比较两个视频,发现这是一个编码问题.我通过FFmpeg
生成视频,并在生成视频时添加-brand mp42
。简而言之,这很可能是由于不同的编码格式,尽管两者都是
video/mp4
类型。