RTSP客戶端接收存儲數據(live555庫中的openRTSP實例)


一、openRTSP編譯運行

a)windows下編譯運行

還是以mediaServer作為服務端,openRTSP作為客戶端

 

b)Linux下編譯運行

轉自http://kuafu80.blog.163.com/blog/static/122647180201372654556863/

1:  編譯

   (1):  ./genMakefiles           linux
   (2):  make
 
2: 服務器環境
    服務器端是一個支持RTSP server的H.264的攝像頭;
 
3: 運行 openRTSP
    ./openRTSP  -d  20   -f  20  -w 640  -h  480   -b  400000  "rtsp://192.168.2.239/id=0"
或 ./openRTSP    -f  20  -w 640  -h  480   -b  400000  "rtsp://192.168.2.239/id=0"
參數解釋;  -d  20   --->程序運行時間,如果沒有程序持續從服務器獲取視頻;
                   -f   20   ----> 幀率
                  -w  640  -h  480 -----> 幀分辨率
                  -b  400000  ---->碼率
4: 如果不修改playCommon.cpp的 代碼,openRTSP將獲取的視頻數據通過stdout直接打印到屏幕
 
5: 如果是自己取裸碼流,則可以調用SPS相關的函數,將H264的幀信息告訴解碼器,否則無法解碼
    unsigned int num=1;
    SPropRecord * sps = parseSPropParameterSets(subsession->fmtp_spropparametersets(),num);
    fileSink = H264VideoFileSink::createNew(*env, outFileName,
                            subsession->fmtp_spropparametersets(),
                            fileSinkBufferSize, oneFilePerFrame);
    struct timeval tv={0,0};
    unsigned char start_code[4] = {0x00, 0x00, 0x00, 0x01};
    fileSink-> addData(start_code, 4, tv);
    fileSink->addData(sps[0].sPropBytes,sps[0].sPropLength,tv);
    delete[] sps;
 
6: 稍微修改代碼讓openRTSP只錄視頻,且保存到指定的文件
    streamURL = argv[1];
      // add by Andy_xi
     createReceivers = True;   // 保存視頻
     outputAVIFile = False;   //因為是H264
     videoOnly = True;
     singleMedium = "video";   //只要視頻
     //<------end
 
7: 調試記錄
    啟動openRTSP后,一定的看到SDP信息中的SPS信息,否則解碼器可能不能解碼
    a=fmtp:106 profile-level-id=42001E;sprop-parameter-sets=Z0KAKNoB4AiXlQ==,aM48gA==;packetization-mode=0
 
只要有這個信息,用file  命令看生成h264文件顯示如下:
 
new.h264: JVT NAL sequence, H.264 video, baseline @ L 40
 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM