linuxlive555
① 怎樣編譯live555 openrstp
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
② 開源的視頻傳輸框架 linux下可調 像live555 ffmpeg 之類的 還有那些 具體是什麼 最好有對比的文章資料
gstreamer
不是很懂流媒體,不過以前用過gstreamer 做rtsp伺服器
③ live555的性能不給力,該怎麼處理
我在開發板上移植了live555MediaServer,可以實現正常的傳輸。但似乎性能很不高,當進行16路D1的數據傳輸時,系統從硬碟上讀取視頻文件,CPU的idle時間幾乎為0,以下是我用top命令看到的系統性能:
Live555MediaServer 進程佔用CPU-- 50%
用戶態時間: 17%
內核態時間: 23%
idle時間: 0%
io時間 : 50%
如此,還沒運行其他應用,CPU就已經被全部占滿了,顯然無法工作。
各位幫幫忙,告訴我有沒有改進的方法(代碼最好),或者其他的替代live555的方案(除了gstreamer)
------解決方案--------------------------------------------------------
提高硬碟IO的效率,你不妨做個測試,只是硬碟讀取38M數據看看佔用多少cpu。
如果確認是IO的問題,不妨嘗試採用dio來提高讀取的效率。
可參考 基於Linux的Socket網路編程的性能優化。 我以前就對live555的接收模塊做了優化,CPU佔用小30%。
④ 在Linux環境下如何調試live555
(1)先下載live555的源碼如:live.2011.06.14a.tar.gz(2)解壓源碼tar -zxvf live.2011.06.14a.tar.gz(3)cd live(4)./genMakefiles linux-gdb(5)make經過以上步驟生成的live555MediaServer可以用於gdb調試,如果要使源代碼中的DEBUG宏有效,還需要修改live/config.linux-gdb文件,在COMPILE_OPTS一行中添加-DDEBUG即可。
⑤ 如何使用vim交叉編譯live555
去live555 官網
下載live555-latest.tar.gz
解壓後 運行 ./genMakefiles linux-64bit //這個時在pc上編譯
如果想交叉編譯 cp config.armlinux config.zxl
並修改CROSS_COMPILE?= arm-hisiv100-linux-uclibcgnueabi-
./genMakefile zxl (只寫後綴名即可)
再make即可
測試是否好使
server端 運行 live555MediaServer
⑥ live555、jrtplib、ortp、gstreamer,用哪一個比較好呢解決方法
接收端想在WindowsPC機上觀看。
本人正在讀研,以前幾乎沒接觸網路傳輸。看了很長時間的資料,看大家用的最多的就是live555和jrtplib了,但是這兩個都是用C++寫的,而我的採集和編碼都是用C語言寫的。至於ortp和gstreamer好像用的人不多。
------解決方案--------------------------------------------------------
伺服器端使用live555、jrtplib,客戶端建議如果是windows建議使用DITRECTSHOW,是LINUX建議使用GSTREAMER,至於解碼使用ffmpeg就可以了