VideoJS 适用于 safari 但不适用于 chrome 中的某些带有 CORS 的视频

Posted

技术标签:

【中文标题】VideoJS 适用于 safari 但不适用于 chrome 中的某些带有 CORS 的视频【英文标题】:VideoJS works on safari but not in chrome for some videos with CORS 【发布时间】:2019-11-01 13:43:27 【问题描述】:

我正在使用 videojs 在 Chrome 中使用 HLS,但对于特定的 URL,这会失败(CORS 问题),但在 Safari 中它可以正常播放。

我在 videojs 中有一个代码,但为了更快地找出问题,我使用了这个在线播放器: https://videojs.github.io/videojs-contrib-hls/

对于此文件,Chrome 中存在问题(但 Safari 中没有): https://s3-us-west-2.amazonaws.com/andy-mediaconvert-tests/Haystack.tv/2019-05-10_Output/02_qvbr_ch1/ch1_hd720.m3u8

像这样的其他链接在这两种情况下都有效: https://d2ufudlfb4rsg4.cloudfront.net/bloomberg/IIrcyflxg/IIrcyflxg_medium.m3u8

然后,我的问题是,为什么 Safari 可以播放有 CORS 问题的视频而 Chrome 不能?或者 Safari 如何避免 CORS 问题?尝试在 Chrome 中重现它。

【问题讨论】:

***.com/questions/13421463/… 有帮助吗? 【参考方案1】:

CORS 由浏览器而非服务器强制执行。因此,资源是否被阻止或访问取决于浏览器。在 chrome 的情况下,视频片段是通过 XHR 下载的,因此由浏览器 HTTP 堆栈处理。对于原生支持 HLS 的 safari,片段由媒体播放器直接下载,绕过浏览器,从而绕过 CORS。

这种行为无法在 chrome 中重现。

【讨论】:

当您说“媒体播放器”时,您是指 QuickTime?我看过safari直接用它玩 “QuickTime”只是一个营销名称。 Safari 可能会也可能不会与 QuickTime 应用程序共享代码。

以上是关于VideoJS 适用于 safari 但不适用于 chrome 中的某些带有 CORS 的视频的主要内容,如果未能解决你的问题,请参考以下文章

height:100% 适用于 Chrome 但不适用于 Safari [重复]

Jquery .click() 不适用于 safari .. 但适用于其他浏览器

Javascript 适用于 FF / IE 但不适用于 Chrome / Safari

HTML5 音频播放器适用于 safari/Chrome,但不适用于 iPhone

Socket.io 适用于桌面 safari 和 chrome,但不适用于移动设备

我的代码适用于 Firefox、Safari 和 MS Edge,但不适用于 Chrome