live555client连多路1080P视频流花屏问题
硬件和软件环境是这种:
DM8168 + linux。 解码器是DM8168自带的
视频来源:
ipc通过live555做的的rtsp sever发送过来的
其它測试:
通过VLC在pc连4路1080P没有问题。都挺流畅的。
用之前一个项目中自己实现的RTSP client连相同的1080p 4路到6路都没有问题(仅仅是那个占用内存太多了。才打算用live555重写)
live555 rtsp client 客户端大概例如以下:
改动openRTSP, 使支持多个实例支持多个RTSPClient,当中 env用的是同一个,也就是仅仅有一个EventLoop。即单线程的;
存在问题例如以下:
当连3路1080P视频显示非常流畅, 帧率25。 每1秒为周期的到来: 0x67(sps)... 0x68(pps)...0x65(IDR)...data;
但连4路或4路以上1080P时,视频变得很卡,发现sps和pps还是同期性的到来, 但0x65却变得很少,感觉应该是丢了。
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
解决进度:
2015.06.09
今天看到这样一句话:
//playCommon.cpp /* NOTE: If you want to develop your own RTSP client application (or embed RTSP client functionality into your own application), then we don't recommend using this code as a model, because it is too complex (with many options). Instead, we recommend using the "testRTSPClient" application code as a model. */
难道testRTSPClient比openRTSP性能高,但细想一下又不是那回事。流程都是一样的,仅仅是配置项不一样;但总算还是有点希望的,抽点时间把testRTSPClient改一下应该不是什么难事。
。
參考博文:http://blog.chinaunix.net/uid-15063109-id-4482932.html
2015.06.08
对,一路到3路1080P 都没有问题,仅仅是4路或4路以上就不行了。
还有昨天測试,尝试把socket缓冲区加大到10M測试发如今前大约1分钟里,视频流流畅,sps,pps,idr周期性的到来;但之后idr開始丢失,视频開始卡;推測是10M的socket接收缓冲区满了之后。因为处理只是来导致新接收数据把之前的数据冲掉了,导致了视频花屏。感觉还是处理只是的原因,也不知道是程序写哪有问题。。
。
2015.06.07
測试发现不加解码。 仅仅取流(也就仅仅启动Live555取流)相同存在问题,一到4路或超过4路1080P。0x65(idr包)就急剧的降低,与sps、pps出现的不成比例; 占用的cpu为 (53%、58% 、60% 69%)。而且一直在这之间徘徊。