通过云服务器搭建了流媒体,将rtmp转成http流推出去,发现有6,7秒左右的延迟,通过从网上找到的几种方法,结合后延迟目前约为1.5s左右。步骤如下
1.推流搭建的nginx服务器,需要修改nginx.conf文件中的gop_cache 缓存为关闭状态
要求最小延时,需要把gop_cache 设置为off;要求快速播放,需要把gop_cache 设置为on;
设置完成后延迟有明显提升,延迟达到2-3s左右,完成基本开发的功能
为进一步缩短直播延时时间,再前端界面上加入跳帧,同时可以解决当离开网页后的累计延迟问题,加入后直播延时达到1.5s
setInterval(() => {
if (videoElement.buffered.length) {
let end = videoElement.buffered.end(0);
let diff = end - videoElement.currentTime;
if (diff >= 1) {//如果差值大于等于0.5 手动跳帧 这里可根据自身需求来定
videoElement.currentTime = videoElement.buffered.end(0);//手动跳帧
}
}
}, 2000);