分享

直播软件开发,低延迟视频流播放的方案

 yunbaoKJ 2022-10-20 发布于山东

免费直播软件开发的视频流不仅仅是在本地传播,还需要考虑到跨地区传递时网络情况、带宽限制等,当然对于免费直播软件开发视频流的要求自然是低延迟、低资源消耗。但真正达到这两点并不容易。

  



一、最经典的直播系统方案

不论是web端还是APP端,RTMP协议永远都属于优先考虑使用的实时传输协议,延迟低、实时性好。不过过了今年之后,RTMP协议在web端的应用可能会受到影响,浏览器需要借助flash插件才能播放,但今年12月之后,浏览器不再支持flash插件的应用。

尽管我们还有RTSPHLS等协议,但对于免费直播软件开发来说,RTSP更适合视频监控、视频会议、IP电话等场景;而HLS则延迟太高不符合要求。

二、低延迟优化

通过对比,现在RTMP仍然是最优的传输协议,那么如何对RTSP协议进行优化降低延迟呢?

1.推流端ffmpeg可以通过控制一些参数来降低推流的延迟,比如提高编码的效率、减少缓冲大小等,必要情况下会牺牲一部分视频质量来弥补延迟造成的缺口。

2.拉流端flvjs可以开启enableStashBuffer来提高实时性。

  



三、如何实现多线程优化

视频的解码,对CPU来说占用率很高,这也是为什么直播软件开发会在必要情况下牺牲一部分视频质量、降低视频分辨率等手段来降低视频码率,虽然不能太好的降低CPU的消耗情况,但最起码能保证JSMpeg播放器不会崩溃。就是说用户虽然观感上会受到影响,但还不至于不能看直播。

用户的实际观看场景中,可能存在一个浏览器播放多路视频的情况,基于不同视频网站的播放线路不同,如果所有的视频都在浏览器主进程中进行解码渲染,页面操作会非常的差。针对直播软件开发的解码播放情况,这种问题同样存在,为了降低影响,最好将JSMpeg分离到worker中,保证主进程可以响应用户交互的同时,保证JSMpeg崩溃不会连累主进程。

如果以上方法还不行,不足以降低直播软件开发的延迟,还可以通过调节播放的速度、丢掉积累的帧来保证延迟带来的影响。

声明:以上内容为云豹科技作者本人原创,未经作者本人同意,禁止转载,否则将追究相关法律责任

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多