vlc的應用:用vlc做單播,組播及點播伺服器

Just4life發表於2014-02-26

原文地址:  http://jeremiah.blog.51cto.com/539865/161876

 

    還是前兩天幫“豬小妹”考慮畢業設計的時候,想了想vlc能不能作為vod的伺服器,替代上一篇部落格裡面的live555 media server,因為live555 media server做的確實不是太好。查了些資料,在vlc群裡面亂問了一通,終於解決了。好東西啊,大家共享。
    在這感謝vlc研究群“櫻木”童鞋提供的幫助。

    1. 所需軟體
    vlc-0.9.9或vlc-0.8.6i,主要測試的是比較新的0.9.9版本的。
    putty:一款集telnet,ssh遠端登陸的非常好的軟體。下載地址:http://wrc.gro.clinux.org/putty/putty.exe
    2. 命令列啟動vlc,並開啟後臺資訊顯示,有助於觀察後臺資訊
    開啟cmd,並cd到vlc的目錄,執行
vlc -vv --extraintf=logger
    3. 開啟vlc的telnet服務
    vlc-0.9.9在介面上選擇工具->介面->telnet控制檯
    後臺dos視窗會有反應,顯示
[00000403] main interface debug: looking for interface module: 1 candidate
[00000403] main interface debug: creating VLM
[00000405] main vlm daemon debug: thread 5112 (vlm thread) created at priority 0
(../../src/input/vlm.c:112)
[00000405] main vlm daemon debug: thread started
[00000403] telnet interface: using the VLM interface plugin...
[00000403] main interface debug: net: listening to 127.0.0.1 port 4212
[00000403] telnet interface: telnet interface started on interface 127.0.0.1 421
2
[00000403] main interface debug: using interface module "telnet"
[00000403] main interface debug: TIMER module_Need() : 19.000 ms - Total 19.000
ms / 1 intvls (Avg 19.000 ms)
[00000403] main interface debug: thread 5136 (interface) created at priority 0 (
../../src/interface/interface.c:168)
[00000403] main interface debug: thread started
    注意觀察main interface debug: net: listening to 127.0.0.1 port 4212這句話,說明vlc現在的telnet監聽的是127.0.0.1這個地址和4212這個埠。如果沒有顯示ip的話,一般用127.0.0.1是沒有問題的。127.0.0.1就表示的本機,與localhost是同一個意義。
    4. 啟動putty.exe
    主機名稱(或ip)輸入:127.0.0.1
    埠:4212
    連線型別:選Telnet
    點開啟。
    如果沒有出現"Password:"字樣,點開啟就關閉了,那就說明沒有telnet上。(這個時候可以在cmd裡面輸入telnet 127.0.0.1 4212,看結果應該是正在連線到127.0.0.1...不能開啟到主機的連線, 在埠 4212: 連線失敗,或者是與主機失去連線。不用cmd的telnet連線的主要原因是過會輸入命令的時候看不到。)這個時候,請關閉防火牆,防毒軟體及一切相關軟體,不過中毒了別找我哎。(*^__^*) 嘻嘻……繼續繼續。
    如果沒有出現以上問題,在Password:後面輸入"admin",沒有明文回顯。登入成功後會顯示:Welcome, Master
    5. 架設點播服務vod
    分別輸入:
new vod1 vod enabled
setup vod1 input d:/01.avi
    解釋下:
    new了一個名字叫vod1的vod,設定vod1的input為d:/01.avi。
    驗證:開啟另一個vlc,開啟rtsp://127.0.0.1/vod1。應該就可以播放了。127.0.0.1可以換成自己的ip。
    6. 架設組播伺服器
    繼續輸入:
new ch1 broadcast enabled
setup ch1 input d:/02.avi [loop]
setup ch1 output #duplicate{dst=rtp{dst=226.0.0.6,mux=ts,port=1234}}
control ch1 play
    解釋下:
    new了一個名字叫ch1的broadcast。設定ch1的input為d:/02.avi,loop可選,表示迴圈播放。設定ch1的output為#duplicate{dst=rtp{dst=226.0.0.6,mux=ts,port=1234}},表示rtp協議的ts流傳送到組播地址為226.0.0.6,埠1234。控制ch1播放。
    擴充:
    1) output後面可以跟sout引數。具體可以參考vlc->媒體->流->流輸出介面的已生成的流輸出字串。
    2) control ch1後面還可以加stop,pause,seek 百分比。表示停止,暫停和跳轉到百分之幾的位置。
    驗證:開啟一個vlc,開啟rtp://226.0.0.6:1234。應該就可以播放了。
    7. 架設單播伺服器
    第6步裡面的output換成單播的地址就行了。其他的都一樣的。注意不要new重名了。
    8. 儲存剛才操作
    繼續輸入
save d:/01.cfg
    將剛才操作儲存到了d:/01.cfg裡面,除了control。可以通過記事本等文字編輯器檢視一下里面的內容。
    如果重新開啟了vlc,則可以輸入
load d:/01.cfg
    將剛才儲存的操作讀入進來,繼續操作或控制。
         
    通過這樣的配置,一個vlc的例項可以提供多個服務,包括單播,組播和點播。確實強大啊。
    這樣上一篇部落格的流媒體伺服器可以替換為vlc了。跟上一篇日誌結合作個簡單的流媒體服務的網站或者類似於pplive的客戶端,就不是太有技術難度的事情了。

相關文章