当我在 Amazon EC2 实例中托管视频时,MP4 视频(h.264 格式)无法在 iPhone 中播放

当我在 Amazon EC2 实例中托管视频时,MP4 视频(h.264 格式)无法在 iPhone 中播放

我使用以下命令将视频转换source.flv为(h.264 格式):target.mp4

ffmpeg -i source.flv -r 25 -b:a 128k -strict -2 -c:v libx264 -preset slow -s 320x240 -b:v 768k -ar 44100 -c:a aac target.mp4;

当我在 Amazon EC2 实例上托管视频时,视频target.mp4正在我的计算机浏览器中播放,但无法在 iPhone/iPad 上播放。

当我将视频托管到其他地方时,相同的target.mp4视频会在我的计算机浏览器以及 iPhone/iPad 上播放。

当我尝试从 EC2 实例打开视频时,QuickTime 显示以下错误:

QuickTime
BYTE_RANGE_ERROR_MESSAGE

答案1

最后我们得到了‘为什么我们的 mp4(h.264)’视频无法在 iPhone 上播放的真正解决方案。 解决方案是:从 httpd.conf(apache 服务器配置文件)中删除或注释 compress.conf 文件。

Compress.conf 文件用于在将输出发送到客户端之前对其进行压缩,如果您不想删除 compress.conf,则可以在 compress.conf 中注释几行。注释

# 加载过滤模块

SetEnv 过滤器错误文档 true

FilterDeclare comp-resp

# 压缩除图像、音频和视频之外的所有内容

#FilterProvider comp-resp DEFLATE resp=Content-Type !/^(图像|音频|视频)//

#FilterProtocol comp-resp 更改=是

答案2

为了将视频流式传输到这些 QuickTime / Apple 设备,服务器会发送一个Accept-Ranges: bytes标头。这向播放器表明它可以通过发送字节偏移量来请求视频的某些部分,例如,这允许您从视频中间开始流式传输,而无需下载整个文件。

通常默认情况下此方法有效。但是,字节范围请求也可能被视为安全风险,例如当对服务器发起拒绝服务攻击时。因此,字节范围请求可能会在途中被阻止,无论是通过路由器或防火墙,还是由 EC2 服务器本身阻止,这会导致您看到的错误消息。

因此,请检查连接是否存在可能的阻止请求,或考虑联系 EC2 支持。

也可以看看:

相关内容