live555搭建rtsp服务器推送实时流花屏问题解决

使用live555搭建rtsp服务器推送实时流时总是出现花屏,查阅资料按照大多数人所说的修改做了以下几项修改:

1、修改OutPacketBuffer::maxSize=1024*1024 ;

2、扩展帧解析buffer大小,即BANK_SIZE=1024*1024;

改完之后没什么用,该花还是花,深究之后发现花屏原因是我是通过读文件模拟推送实时流,原264文件是30帧,我是按照50帧推送,所以doGetNextFrame的取帧速度保持在33ms调用一次,这显然会造成严重的丢帧问题。于是我尝试各种修改比如设置fDurationInMicroseconds=1000000/50,还是没什么用。于是我又修改H264or5VideoStreamFramer.cpp的fFrameRate强制改为100,发现一开始取帧速度差不多10ms取帧一次,但是一旦取到IDR帧后又变为按照30fps取帧,所以明白live555会解析sps的帧率,于是将H264or5VideoStreamFramer.cpp里的fFrameRate = fParsedFrameRate的地方都改成100;这样就差不多10ms调用一次doGetNextFrame了,100帧对于大部分环境都是够用了,遇到超高帧的情况再修改。

然后又在doGetNextFrame里做了修改,如果取不到帧就一直等待,取到帧之后再调用afterGetting(this);

live555原来的rtsp服务器逻辑基于读文件推送,所以解析文件头获取帧率以固定帧率取帧推送。可是实时流不确定状况很多,实时源可能无法保证视频帧稳定输出,而且有的编码器可能会pps,sps的帧率和实际帧率不符。所以感觉这样修改还是有必要的。等上实际环境验证下试试rtsp服务器的稳定性和健壮性。

当然对于视频源输出稳定的情况,按照原来的live555架构即可。

放弃live555了,使用ZlMediaKit CAPI 推流服务器简单又高效。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值