reactjs - VideoJS 没有质量级别/尽管在 Safari 桌面中具有 overrideNative,但无法选择质量
问题描述
我正在构建一个播放 HLS 视频的 NextJS 站点。
TLDR;如何覆盖 Safari 的原生 HLS 引擎?需要哪些播放器选项?我的(下)没用!
要在质量之间切换,我使用的是:https ://github.com/videojs/videojs-contrib-quality-levels
在其他浏览器(不是 Safari)中,质量选择器可以正常工作,因为它player.qualityLevels()
包含所需的质量。
但是,在 Safari(桌面)中,数组 ( qualityLevels()
) 是空的,因此我无法在质量之间切换。
我playerOption
这里有这个:
const videoJsOptions = {
autoplay: false,
preload: "auto",
controls: true,
poster: thumbnailURL,
sources: [
{
src: liveURL,
type: "application/x-mpegURL",
withCredentials: false,
},
],
html5: {
nativeAudioTracks: false,
nativeVideoTracks: false,
hls: {
overrideNative: true,
},
},
};
这对这个人的项目很有效(虽然没有反应):https ://jsfiddle.net/geukvmhn/
在 Safari 中查看;显示了这些品质,但对我来说根本不起作用。基本上,我正在努力覆盖 Safari(桌面)中的本机 HLS 引擎。
解决方案
这里至少发生了两件事。
首先,该选项hls: { overrideNative: true }
不起作用。它已被弃用但应该可以工作,但更改为当前vhs: { overrideNative: true }
确实有效。
其次,在其他浏览器上,质量菜单有时也没有质量。有时,在useEffect
钩子中初始化它可能发生在错误的时间。我会将插件初始化和源加载移动到播放器就绪回调中,以控制顺序。
function onPlayerReady() {
this.qualityLevels();
this.src({
src: liveURL,
type: "application/x-mpegURL",
withCredentials: false
});
this.hlsQualitySelector({ displayCurrentQuality: true });
}
推荐阅读
- typo3-7.6.x - TYPO3 未在前端显示图像 - 常规内容元素和 ext:news
- image - 具有某些路径类型的图像不会显示在我的 webgl 应用程序中
- symfony - Symfony 验证器翻译
- jsonschema - 如何在 json 模式中使用 `If` `then` `else` 条件?
- wpf - Prism 7.0 RegisterSingleton 不工作?
- node.js - 不同路径的多个 socket.io 实例
- c# - xunit如何N到N加倍几乎相等
- windows - 移动书签时的Powershell Copy-Item错误
- safari - Whatsapp 分享链接在 Safari 中不起作用
- php - Laravel 5 如何在我的控制器中为每个变量操作我的变量,然后将其传递给我的视图