live555編譯linux
『壹』 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%。
『貳』 如何使用live555-CSDN論壇
1.嘗試過Windows版本和Linux版本的MediaServer, 操作都極其簡單,MediaServer啟動前不需要任何設置,只要打開就行。
2.根據MediaServer的提示,不論L版還是W版,都是把碼流文件(abc.264)放在與可執行程序相同的目錄中。
3.在windows平台上嘗試過Quicktime, 也嘗試過vlc,都不能正常播放。
『叄』 在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即可。
『肆』 怎樣編譯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
『伍』 編譯android-vlc支持rtsp,是不是需要添加live555
前幾天用PC平台上的VLC播放RTSP流媒體時延遲時間較長,存在1s左右的延遲,效果不是很好,後來查了資料,發現這個延遲時間是可以修改的。找到工具->首選項,然後參數設置左下角選擇「全部」,左邊選擇「輸入編解碼」->「網路緩存」選項,可以根據具體需要加以修改,具體見下圖不過這個值不要太小,否則緩存太小,播放視頻的過程中會很卡
『陸』 開源的視頻傳輸框架 linux下可調 像live555 ffmpeg 之類的 還有那些 具體是什麼 最好有對比的文章資料
gstreamer
不是很懂流媒體,不過以前用過gstreamer 做rtsp伺服器
『柒』 如何使用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
『捌』 linux RHEL6.3 yum 安裝mplayer出現以下問題~~求高手,
跟你同樣的命令我這里執行的很正常。
你的系統是什麼版本?
yum 用的是哪個源?
我的執行結果,如下
Installed:
smplayer.x86_64 0:0.6.9-1.el6.rf
Dependency Installed:
a52dec.x86_64 0:0.7.4-8.el6.rf aalib.x86_64 0:1.4.0-5.el6.rf arts.x86_64 8:1.5.10-10.el6
audiofile.x86_64 1:0.2.6-11.1.el6 cppunit.x86_64 0:1.12.1-3.1.el6 dirac.x86_64 0:1.0.2-1.el6.rf
enca.x86_64 0:1.10-1.el6.rf esound-libs.x86_64 1:0.2.41-3.1.el6 faac.x86_64 0:1.26-1.el6.rf
freeglut.x86_64 0:2.6.0-1.el6 fribidi.x86_64 0:0.10.9-1.el6.rf lame.x86_64 0:3.99.5-1.el6.rf
libcaca.x86_64 0:0.99-0.1.beta17.el6.rf libdca.x86_64 0:0.0.5-1.el6.rf libmad.x86_64 0:0.15.1b-4.el6.rf
librtmp.x86_64 0:2.3-1.el6.rf libvdpau.x86_64 0:0.4.1-1.el6.rf live555.x86_64 0:0-0.27.2012.02.04.el6.rf
lzo.x86_64 0:2.03-3.1.el6 mpg123.x86_64 0:1.15.1-1.el6.rf mplayer.x86_64 0:1.0-0.48.svn20100703.el6.rf
mplayer-common.x86_64 0:1.0-0.48.svn20100703.el6.rf mplayer-fonts.noarch 0:1.1-3.0.rf opencore-amr.x86_64 0:0.1.2-1.el6.rf
orc.x86_64 0:0.4.11-1.el6.rf schroedinger.x86_64 0:1.0.10-1.el6.rf svgalib.x86_64 0:1.9.25-1.el6.rf
x264.x86_64 0:0.0.0-0.4.20101111.el6.rf xvidcore.x86_64 0:1.2.2-1.el6.rf
Complete!
『玖』 linux live555 流媒體怎麼播放
通過Live555交叉編譯後運行發現,上面實現的流媒體實時通過文件伺服器的文件點播,沒有相關的流媒體實現方式,
但在Linux下,可以通過某些技巧實現Live555伺服器實時流媒體伺服器,並且是傻瓜式的,簡易程度不需要修改Live555下面一行代碼。
首先,需要編譯/交叉編譯Live555伺服器,這里可以參考一篇文章
http://blog.csdn.net/lawishere/article/details/8182952
源代碼在這
一下討論所有路徑均在原生Live555源碼包解壓後的live目錄下。
編譯成功後,執行./mediaServer/live555MediaServer
你會看到一些點播信息,也就是說你可以在live目錄增加列表中的文件實現對這些文件的點播,其中包括h264凈荷數據格式.264。
利用「Linux下一切皆是文件」這個樸素而又華麗的特點。
我們通過mkfifo命令在當前目錄下創建demo.264這個fifo管道(註:這里後綴需要列表中提供的內容,若實現h264流數據則是.264)。
然後,開啟另外一個進程,通過fwrite介面把獲得的h264凈荷數據寫入到demo.264下(簡單測試可以cat test.264 >> demo.264)實現。
同時遠程通過vlc點播路徑rtsp://192.168.1.41:8554/demo.264
大功告成!!
一句Live555代碼都不需要修改,簡直是傻瓜式的。