如何在 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);
}

CodePen example

但是在 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'}).

加载