live555客户端同时开多个视频花屏

C++语言 码拜 9年前 (2015-11-26) 1228次浏览
最近用live555做rtsp客户端,修改了Live555自带的openRTSP,能支持多个实例了;
但联1080P的视频流超3路视频就有花屏, 联704×576的16路也有同样的问题,不知道是给解码器视频帧不对,还缺少什么参数,如sps,pps:
在FileSink::afterGettingFrame函数如下:

void FileSink::afterGettingFrame(unsigned frameSize, unsigned numTruncatedBytes, struct timeval presentation)
{
    unsigned char const start_code[4] = {0x00, 0x00, 0x00, 0x01};
    if (fHaveWriittenFirstFrame)
    {
        u_int8_t nal_unit_type = (fBuffer[0]) & 0x1F; 
        if (nal_unit_type == 5) //IDR
        {
              printf("\nfind IDR!\n");
              addSpsPps();
        }
        else if (nal_unit_type ==6) //SEI
        {
              printf("\nfind IDR!\n");
        }
        else if (nal_unit_type == 7) //sps
        {
              printf("\nfind IDR!\n");
        }
        else if (nal_unit_type == 8) //pps
        {
              printf("\nfind IDR!\n");
        }
        if ((fPrevPresentationTime.tv_sec != presentationTime.tv_sec 
               || fPrevPresentationTime.tv_usec != presentationTime.tv_usec) 
               &&  fOneFrameSeek > 0)
        {
               sendData();  //关数据到解码器
        } 
    }
    else
    {
        addSpsPps();
        fHaveWritenFirstFrame  = True;    
    }
    addData(start_code, 4, presentationTime);
    addData(fBuffer, frameSize, presentationTime);
    continuePlaying();
}
解决方案:25分
确定不是cpu占用率太高导致的?

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明live555客户端同时开多个视频花屏
喜欢 (0)
[1034331897@qq.com]
分享 (0)