解决方案1.
通过定时器监听流buffered值,要是当前画面与获取的最后一画面延时较高,重新构造播放器播放。
优点:播放的一直是延时不超过可控制延时帧的实时流。
缺点:每次切回或延时过高后会有重新构建过程。
解决方案2.
通过定时器监听流buffered值,进行画面倍速播放到最新帧
优点:不会重新构建
//播放
function realtimeOnFlv(playerDom) {
let player = flvjs.createPlayer({
type: "flv",
url: ``,
isLive: true, //直播模式
hasAudio: false, //无音频
});
player.attachMediaElement(playerDom);
player.load(); //加载
let timer = setInterval(() => {
let end = player.buffered.end(0);
let diff = end - player.currentTime;
//重新构建
if (diff >= 10) {
flv_destroy(player)
realtimeOnFlv(player)
}
//倍速播放
//if (diff >= 10) {
// player.currentTime = player.buffered.end(0);
// playerDom.playbackRate = 2
//} else {
// playerDom.playbackRate = 1
//}
})
}
//销毁
function flv_destroy(player) {
player.pause();
player.unload();
player.detachMediaElement();
player.destroy();
}