由于云端,HLS 视频无法在 Safari 中播放

HLS Video not playing in Safari due to cloudfront

我已经使用 AWS mediaconvert 将一些输入视频转码为支持流(1080p、360p 等)的 HLS 格式,现在我正在尝试使用 cloudfront 将此 HLS 文件播放到我的客户端,我使用的是默认 s3 cloudfront 的来源。

我们将媒体流分割成多个 .ts 文件并创建了一个播放列表 (.m3u8)。但是当我们尝试在Safari浏览器中播放.m3u8文件时,我们无法播放视频文件(.ts文件)。

目前我可以在 Chrome 和 android 上正常播放流,但由于某些原因我无法在 Safari 和 IOS.

上播放该流

我尝试通过增加缓存 TTL 和禁用访问限制来更改云端配置,这样我就可以在不需要 cookie 或令牌的情况下播放流。

尝试了所有方法,但当我尝试播放流时,我在 Safari 上总是遇到同样的问题。当我查看网络中的 safari 控制台和 header 选项卡时,Safari 显示它由于某种原因无法下载视频片段,当我在 safari 中播放单个片段 url 时,它可以工作,但主要播放列表文件不起作用。任何帮助将不胜感激:)

如下图所示,我看到请求来自云端并命中缓存,但 Safari 仍然无法获取任何内容

事实证明这是一个标准相机编码颜色 space 问题,因为 Apple 不支持我们的媒体文件使用的其中一种原色 (BT.2020)。

不支持

支持

因此,为了解决此问题,我们已将此 HDR 降级为 SDR,将 BT.2020 颜色间距转换为 BT.709,然后它在 IOS 和 Safari

中都有效