TSINGSEE青犀视频开发单通道 Go WebRTC服务端拉流接口无响应导致程序堵塞如何处理?

在开发Go语言的WebRTC服务时,遇到一个问题:当使用JavaScript进行摄像头推流并交换SDP信息后,浏览器拉流会导致服务端堵塞,从而引发超时错误。解决方案是在Go中为保存的流开启一个单独的线程持续写入数据,避免接口堵塞。此优化提升了视频播放平台的流畅度和延迟表现。
摘要由CSDN通过智能技术生成

我们在通过GO语言开发webrtc服务时,使用js进行摄像头推流调用go服务端http,交换sdp信息,先把摄像头流推到服务端进行webrtc交互,再调用另外go http服务进行拉流。

第一次进行http拉流,webrtc 会话描述进行过交换,但是测试期间我们发现,如果此时再打开浏览器进行http 会话描述,go服务端会卡住,导致浏览器等段时间会超时错误。

此处的流程应该是下面这样的:

1、Go 中webrtc拿到的流会放到一个全局变量中,如下:

64.png

2、通过go的接口交换会话描述,再使用webrtc回调函数方法,拿到流就往里面写数据。

65.png

问题就出在第二步,我们在使用拉流接口时也是交换会话描述,从第二步中go写流数据的接口拿到流,这样浏览器在进行拉流操作时,接口无响应,导致浏览器超时。

66.png

找到问题,解决问题也比较简单,把go保存的流开个线程,一直往里写数据,这样就不会造成堵塞了。

67.png

我们开发的webrtc-client就已经经过了多次测试,在现有的视频播放平台上有了新的飞跃,而新型的与WebRTC相结合的EasyScreenLive同屏服务将在视频播放的流畅度和延时方面有更加优越的体现,大家可以通过关注Github获得我们的技术动态。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值