我正在基于WebRTC本机的流服务器上工作。对于此项目,我破解了WebRTC本机源代码(版本M60,win10 x64),以便能够为其提供预编码的H264比特流(1080p25,所有帧均编码为I帧)。默认情况下,WebRTC使用42e01f作为h264配置文件,我将其更改为640032(级别5)以支持1080p。在h264_encoder_impl.cc中,我注释了编码部分,只需将字节从输入帧复制到encode_image_的缓冲区中,并生成片段信息。
它正在工作,但是将数据包发送到客户端(Chrome)的速度非常慢(大约2到3 fps)。如果将进纸速度限制为12 fps,则效果很好。
我花了很多时间来调试代码,发现在speedd_sender.cc中发送数据包的速度很慢,因此数据包队列很快将满,然后编码器将被阻塞并停止放置新代码数据包进入队列,直到队列未满。我尝试删除了pedced_sender.cc中的比特率限制,发送速度仍然很慢。
我还检查了Chrome WebRTC调试页面(chrome:// webrtc-internals)中的图形,以检查问题是否出在接收方,解码仅花费每帧2毫秒,接收帧的速率为大约2〜3 fps,没有数据包丢失。
PS。局域网是1 Gbps。
调试几天后,我仍然不知道为什么发送数据包的速度如此之慢。 h264比特流被编码为所有I帧,这可能是个问题吗?
任何答复将不胜感激,谢谢!!
答案 0 :(得分:0)
回答我自己的问题:在发布模式下构建WebRTC。