如何在 Chrome、Android 上的 Video.js 中设置 HLS (m3u8) 的初始时间
How to set initial time for HLS (m3u8) in Video.js on Chrome, Android
我试图在页面加载后的特定时间开始播放 HLS 视频。在大多数浏览器上,这种方法效果很好:
var player = videojs("video");
player.on('canplaythrough', setInitialTime());
function setInitialTime() {
player.currentTime(300);
}
但是在 Chrome 上 Android 视频始终从 0 秒开始。
我曾尝试在 play
而不是 canplaythrough
上触发事件,但这不是理想的解决方案,因为用户必须在单击播放按钮后等待预加载。
测试于 Android 11,Chrome 89.0.4389
正在使用 Android 的原生 HLS 支持播放视频,这可能是个问题,因为 Android 的 HLS 支持有很多问题,事件可能会在您拥有之前触发有机会设置一个监听器。
首先,更新Video.js。 5.x 现在很老了。最新的是 7.11.8。同时删除已过时的 videojs-contrib-hls。旧版本默认使用浏览器的 HLS 支持(如果可用),较新版本优先使用 Video.js 的 HTTP 流而不是浏览器(Safari 除外)。
其次,即使使用最新的 Video.js,如果播放器初始化时视频元素已经加载了 HLS 视频,则它不会再次重新加载源。为避免这种情况,请使用 <video-js>
元素而不是 <video>
,或者删除 source
元素并使用 player.src({src: 'https...', type: 'application/x-mpegURL'})
.
加载
我试图在页面加载后的特定时间开始播放 HLS 视频。在大多数浏览器上,这种方法效果很好:
var player = videojs("video");
player.on('canplaythrough', setInitialTime());
function setInitialTime() {
player.currentTime(300);
}
但是在 Chrome 上 Android 视频始终从 0 秒开始。
我曾尝试在 play
而不是 canplaythrough
上触发事件,但这不是理想的解决方案,因为用户必须在单击播放按钮后等待预加载。
测试于 Android 11,Chrome 89.0.4389
正在使用 Android 的原生 HLS 支持播放视频,这可能是个问题,因为 Android 的 HLS 支持有很多问题,事件可能会在您拥有之前触发有机会设置一个监听器。
首先,更新Video.js。 5.x 现在很老了。最新的是 7.11.8。同时删除已过时的 videojs-contrib-hls。旧版本默认使用浏览器的 HLS 支持(如果可用),较新版本优先使用 Video.js 的 HTTP 流而不是浏览器(Safari 除外)。
其次,即使使用最新的 Video.js,如果播放器初始化时视频元素已经加载了 HLS 视频,则它不会再次重新加载源。为避免这种情况,请使用 <video-js>
元素而不是 <video>
,或者删除 source
元素并使用 player.src({src: 'https...', type: 'application/x-mpegURL'})
.