我正在使用video-js HLS创建视频播放器来播放HLS Live视频。我正在创建16个视频播放器,并同时连接16个不同的HLS实时URL。以下是创建视频元素的Java脚本部分。
var video = document.getElementById("video_id");
var player = videojs(video,{hls:{ bandwidth: 102400,enableLowInitialPlaylist:true}});
player.src({
src: videoURL,
type: 'application/x-mpegURL',
withCredentials: false
});
代码可以正常工作,RAM使用量约为33-400 MB,但问题是随着时间的流逝,内存使用量(RAM)逐渐增加,大约2-3小时后RAM达到2GB以上并由于内存问题导致浏览器崩溃。
我尝试了一种减少此问题的方法,例如,在15分钟的间隔内销毁所有播放器,并创建新播放器并重新连接实时供稿。 在执行以下步骤时,这会对代码产生一定的影响,即减少RAM使用量,但大约为400-500 MB,这意味着内存使用量在每15分钟周期内仍在增加,并且在5-6小时和浏览器后达到2GB崩溃。
这是删除视频播放的代码
var videoElement = document.getElementById(video_id);
if (typeof(videoElement) != 'undefined' && videoElement != null){
var player = videojs(video_id);
player.dispose();
}
原因可能是Live play中的任何高速缓存存储,如果可以的话,我该如何清除内存。
答案 0 :(得分:1)
以防万一其他人来到这里寻找修复,下面是帮助我的方法。运行 2 小时后,当直播单个 hls 视频时,videojs 内存占用在 200MB
到 250MB
之间波动。
看起来有很多参数需要探索和配置。默认值设置不当。
window.addEventListener("offline", (e) => window.location.reload());
this.instanceId = new Date().getTime();
videojs.registerPlugin("hlsQualitySelector", qualitySelector);
this.player = videojs(
this.videoNode,
{
techOrder: ["html5", "flash", "other supported tech"],
liveui: true,
autoPlay: "muted",
controls: true,
html5: {
hlsjsConfig: {
enableWorker: true,
liveBackBufferLength: 15,
backBufferLength: 15,
liveMaxBackBufferLength: 15,
maxBufferSize: 0,
maxBufferLength: 10,
liveSyncDurationCount: 1,
},
},
},
function onPlayerReady() {
this.play();
},
);
this.player.hlsQualitySelector({ displayCurrentQuality: true });