這段時間用到了流媒體資料轉送的TCP和UDP方式,感覺vlc可以做這方面的demo,這裡總結下,也方便我以後查閱。
簡介
VLC首頁:http://www.videolan.org
VLC不僅僅是個播放器,也可以作為流媒體伺服器使用。這個網上有相關的資料,我就不多說了。
聲明下本文用的VLC版本:2.0.3
用VLC搭建基於UDP的流媒體伺服器
流媒體伺服器大多數是基於UDP的,這個在VLC中也有好幾種實現,我這裡只列出我用到的幾個。
1、UDP(legacy)傳統模式
服務端操作
開啟“媒體——流”選項,:
點擊“添加”按鈕選擇流媒體檔案,然後點擊“串流”按鈕
點擊“下一個”後,在“目標設定”介面選擇“UDP (legacy)”,然後點擊添加按鈕
填上目標ip地址,並在“轉碼選項”中選擇相應的編碼類別型(這個視情況而定)
可以點擊“下一個”進行相關設定,也可以點擊“串流”來完成服務端的設定。這裡我點擊“串流”完成服務端的設定。
用戶端操作
點擊“媒體——開啟網路串流”,在彈出的框中輸入“udp://@1234”,點擊“播放”按鈕即可。
通過介面操作比較簡單,但如果經常進行此類工作的話,指令碼是比較靠譜的。
命令列操作方式
服務端(172.16.1.1):
vlc -vvv sample1.avi --sout udp:172.16.1.100:1234 --ttl 10
用戶端(172.16.1.100):
vlc udp://@:1234
2、RTP方式
雖然有基於TCP的RTP,但抓包發現,VLC的RTP是基於UDP的。
服務端操作
前幾步和“UDP(legacy)傳統模式”類似,這裡不再贅述。主要是在目標裡面選擇“RTP / MPEG Transport Stream”這個選項,:
填IP,選連接埠:
點擊“串流”按鈕即可完成服務端操作。
用戶端操作
點擊“播放”按鈕即可。
命令列操作方式
服務端(172.16.1.1):
vlc -vvv sample1.avi --sout "#transcode{vcodec=h264,vb=0,scale=0,acodec=mpga,ab=128,channels=2,samplerate=44100}:rtp{dst=172.16.1.100,port=5004,mux=ts,ttl=10}"
用戶端(172.16.1.100):
vlc rtp://@:5004
3、RTSP方式
RTSP方式是通過RTP進行流媒體資料的傳輸的,VLC的實現也是基於UDP的。這種方式網上的參考資料比較多,我就不了,直接敘述命令列方式的操作。
命令列操作方式
服務端(172.16.1.1):
vlc -vvv sample1.avi --sout "#transcode{vcodec=h264,vb=0,scale=0,acodec=mpga,ab=128,channels=2,samplerate=44100}:rtp{sdp=rtsp://:8554/test}"
用戶端(172.16.1.100):
vlc rtsp://172.16.1.1:8554/test
用VLC搭建基於TCP的流媒體伺服器
VLC的http方式搭建的流媒體伺服器是用TCP方式進行資料轉送的,這裡就以這個為例子了。
HTTP方式
這個的介面操作和RTSP的類似,就不贅述。
命令列操作方式
服務端(172.16.1.1):
vlc -vvv sample1.avi --sout "#transcode{vcodec=h264,vb=0,scale=0,acodec=mpga,ab=128,channels=2,samplerate=44100}:http{mux=ffmpeg{mux=flv},dst=:8080/test}"
用戶端(172.16.1.100):
vlc http://172.16.1.1:8080/test
好,就這些了,希望對你有協助。