Chrome 错误检测是否可以播放 HLS 视频媒体
Chrome is wrongly detecting can it play HLS video media
我正在尝试根据 URL.
以编程方式确定某些媒体是否会播放
根据浏览器测试,HLS 可以在我的 Chrome 浏览器上使用 videoJs 播放器视频库正常播放,但是 CanIUse 说它不会,这是我的第一个困惑。
我然后运行它通过这个JavaScript...
使用这个 npm 包获取 mime 类型
https://www.npmjs.com/package/mime-types
var mime = require('mime-types');
// get the extension of the file
var mimeType = mime.contentType(file.split('.').pop());
// returns 'application/vnd.apple.mpegurl'
var video = document.createElement('video');
console.log(Boolean(video.canPlayType(mimeType)));
returns 也是错误的,但是它确实在播放,这让我对这是怎么发生的感到困惑,有没有人知道为什么会发生这种情况,或者我如何正确检测视频是否会玩还是不玩?
“我可以使用 HLS”页面列出了 HTML5 video
标签的兼容性矩阵,这意味着它会检查浏览器是否 本机支持 该格式。例如,除了 MacOS 上的 Safari 之外,大多数桌面浏览器都无法原生播放 HLS。
这就是为什么对于像 Apple HLS 和 MPEG-DASH 这样的格式,您需要一个 JavaScript 播放器来将特定格式转换(重新打包没有 re-encoding 的流)到 video
元素可以本地处理。
关于编解码器,您可以选择最低公分母,例如带有 AAC 的 H.264 基线,或者提供针对目标设备量身定制的具有回退机制的不同格式。
我正在尝试根据 URL.
以编程方式确定某些媒体是否会播放根据浏览器测试,HLS 可以在我的 Chrome 浏览器上使用 videoJs 播放器视频库正常播放,但是 CanIUse 说它不会,这是我的第一个困惑。
我然后运行它通过这个JavaScript...
使用这个 npm 包获取 mime 类型
https://www.npmjs.com/package/mime-types
var mime = require('mime-types');
// get the extension of the file
var mimeType = mime.contentType(file.split('.').pop());
// returns 'application/vnd.apple.mpegurl'
var video = document.createElement('video');
console.log(Boolean(video.canPlayType(mimeType)));
returns 也是错误的,但是它确实在播放,这让我对这是怎么发生的感到困惑,有没有人知道为什么会发生这种情况,或者我如何正确检测视频是否会玩还是不玩?
“我可以使用 HLS”页面列出了 HTML5 video
标签的兼容性矩阵,这意味着它会检查浏览器是否 本机支持 该格式。例如,除了 MacOS 上的 Safari 之外,大多数桌面浏览器都无法原生播放 HLS。
这就是为什么对于像 Apple HLS 和 MPEG-DASH 这样的格式,您需要一个 JavaScript 播放器来将特定格式转换(重新打包没有 re-encoding 的流)到 video
元素可以本地处理。
关于编解码器,您可以选择最低公分母,例如带有 AAC 的 H.264 基线,或者提供针对目标设备量身定制的具有回退机制的不同格式。