我在一个基于WebRTC原生的流媒体服务器上工作。对于这个项目,我已经破解了WebRTC原生源代码(版本M60,win10 x64),以便能够为它提供一个预编码的H264比特流(1080p25,所有帧都编码为I帧)。默认情况下,WebRTC使用42e01f作为h264配置文件,我将其更改为640032(5级)以支持1080p。在h264_encoder_impl.cc中,我注释了编码部分,只需将输入帧中的字节复制到encoded_image_的缓冲区中,并生成片段信息。
它正在工作,但向客户端(Chrome)发送数据包的速度非常慢(大约2~3fps)。如果我将进给速度限制在12fps,它工作正常。
我花了很多时间调试代码,我发现在paced_sender.cc中发送数据包的速度很慢,所以数据包队列很快就会满了,然后编码器就会被阻塞,并停止将新的数据包放入队列,直到队列不满为止。我试着取消了paced_sender.cc的码率限制,但发送速度仍然很慢。
我还检查了Chrome WebRTC调试页面(chrome://webrtc-internals)中的图表,以检查问题是否出在接收器端,解码每帧仅需2毫秒,接收帧的速率约为2~3fps,没有丢包。
PS。LAN为1 Gbps。
经过几天的调试,我仍然不知道为什么发送数据包的速度这么慢。h264比特流被编码为所有的I帧,这会是一个问题吗?
如有任何回复,将不胜感激,谢谢!
发布于 2018-08-02 16:28:49
回答我自己的问题:在发布模式下构建WebRTC。
https://stackoverflow.com/questions/51636671
复制相似问题