1. 程式人生 > >搭建VLC流媒體服務

搭建VLC流媒體服務

概述:

流媒體技術是一種支援多媒體資料流通過網路從伺服器向客戶端傳送,接受方邊接收邊播放的技術。

對網路服務的要求:

  1. 必須實時傳輸資料,僅容許少量的延遲(數百毫秒);
  2. 傳送資料相對可靠性,容忍一定數量的資料丟失;
  3. 保證一定的頻寬,以保證傳輸的資料量能夠實時播放。

架設基於vlc的UDP伺服器

UDP(使用者資料報協議),是 OSI 參考模型中一種無連線的傳輸層協議,提供面向事務的簡單不可靠資訊傳送服務。是一個簡單的面向資料報的傳輸層協議,與面向連線的TCP協議相對應。

正是由於UDP協議沒有TCP的擁塞控制和傳送速率控制,也沒有提供資料傳輸的可靠性保證,但是卻保證了傳輸的實時性,所以被流媒體應用系統所廣泛採用。主要用來支援那些需要在計算機之間傳輸資料的網路應用,包括網路視訊會議系統在內的眾多的客戶/伺服器模式的網路應用都需要使用UDP協議。

利用vlc(VLC media player 1.0.1)實現UDP伺服器:

首先在伺服器端開啟VLC播放器,如下:

qq

接下來選擇媒體選單—->選擇高階開啟檔案,介面如下:

qq1

單擊新增按鈕,可以將磁碟上的媒體檔案新增進來,然後在右下角的下拉選單中選擇流,進入下一步,如下:

qq12

在上面的的介面中,單擊目標按鈕,進行UDP設定,新增你想要的傳送到的客戶端,可以設定多個。另外,如需要轉碼則把啟用轉碼選項打鉤,其他可以選擇預設的設定,不需要更改也可,當然也可以根據你的要求進行輸出配置,進入下一步,視訊就開始在伺服器端進行播放,並向目標端傳送流資訊。

接下來,在客戶端開啟VLC播放器,單擊媒體選單,選擇開啟網路串流,出現如下介面:

qq123

選擇UDP協議,埠預設即可,單擊播放按鈕就可以實現在客戶端的播放了。

以上是利用圖形介面進行操作,當然也可以使用命令來操作。

VLC 伺服器RTSP功能實現

RTSP(Real Time Streaming Protocol),實時流傳輸協議,是TCP/IP協議體系中的一個應用層協議,由哥倫比亞大學、網景和RealNetworks公司提交的IETF RFC標準。該協議定義了一對多應用程式如何有效地通過IP網路傳送多媒體資料 。RTSP在體系結構上位於RTP和RTCP之上,它使用TCP或RTP完成資料傳輸。HTTP 與RTSP相比,HTTP傳送HTML,而RTP傳送的是多媒體資料。HTTP請求由客戶機發出,伺服器作出響應;使用RTSP時,客戶機和伺服器都可以發出請求,即RTSP可以是雙向的。

首先進入到VLC的安裝目錄下,執行類似如下的命令:

vlc –ttl 12 -vvv –color -I telnet –telnet-password videolan –rtsp-host 219.219.218.239:5554

對上述引數的解釋:–ttl:是對hop的限制;-vvv選項用來輸出錯誤資訊,可以省略;219.219.218.239是RSTP點播伺服器的主機地址; videolan 是telnet登入RTSP點播伺服器時輸入的口令,這兩個部分使用者可以根據自己的情況進行修改。

登入RTSP點播伺服器

在這裡我是運用SecureCRT軟體進行telnet登入。介面如下所示:

1

當點選連線後,要求輸入密碼:videolan,回車後如果顯示:Welcome, Master,則表明登入成功。

在主機名欄輸入:219.219.218.239,該內容必須與前面建立的RTSP點播伺服器的主機地址一致;在埠欄輸入:4212,該埠號在使用VLC預設設定時不能改為其他的數值。

接下來就可以設定點播檔案了

在登入成功的介面上,輸入以下的命令:

new Test vod enabled
setup Test input myVideo.mpg

最後,就可以在客戶端觀看視訊,命令如下:

vlc rtsp://219.219.218.239:5554/Test

還可以通過VLC播放器的VLM進行視覺化配製,並生成.vlm配置檔案,然後利用SecureCRT工具登入到RTSP點播伺服器,利用load命令將配置檔案匯入,使用show命令可以檢視匯入的檔案資訊。

測試結果:

CDXA/MPEG-PS   未經過編碼轉換即可播放,但是僅可以用VLC播放器進行播放。原因是其他播放器無法解析rtsp://219.219.218.147:5554/Test 中的Test檔名。

利用RTP協議實現流輸出

實時傳送協議(Real-time Transport Protocol或簡寫RTP)是一個網路傳輸協議,它是由IETF的多媒體傳輸工作小組1996年在RFC 1889中公佈的。RTP協議詳細說明了在網際網路上傳遞音訊和視訊的標準資料包格式。它一開始被設計為一個多播協議,但後來被用在很多單播應用中。RTP協議常用於流媒體系統(配合RTCP協議),視訊會議和一鍵通(Push to Talk)系統(配合H.323或SIP),使它成為IP電話產業的技術基礎。RTP協議和RTP控制協議RTCP一起使用,而且它是建立在使用者資料報協議上的。

伺服器端:

vlc -vvv input_stream –sout ‘#rtp{dst=192.168.0.12,port=1234,sdp=rtsp://server.example.org:8080/test.sdp}’

客戶端:

vlc rtsp://server.example.org:8080/test.sdp

rtp: streams over RTP. This can only be used to stream MPEG-TS over plain RTP.

VLC實現mmsh/mms點播功能

MMS協議(Microsoft Media Server Protocol)是用來訪問並且流式接收Windows Media伺服器中.asf檔案的一種協議。MMS協議用於訪問Windows Media釋出點上的單播內容。

示例視訊.mpg格式。

vlc –vvv input_stream:sout=#transcode{vcodec=h264,vb=800,scale=1,acodec=mp4a, ab=128,channels=2,samplerate=44100}:std{access=mmsh,mux=asfh,dst=:8080}

在VLC客戶端中用以下命令播放:mmsh://server_ip_address:8080
在暴風影音,Windows Media Player中可以正常播放,在KMPlayer中視訊格式正常,但沒有聲音,在real中無法播放,
錯誤原因:音訊無法解析。
另外,我測試了幾個高清視訊(mov,mkv,wmv),發現的情況是,可以播放,但是太卡。

VLC實現http 點播功能

將需要的媒體檔案放在伺服器的某個路徑下面,伺服器可以是Apache,tomcat等均可。
然後在客戶端可以利用多種播放器進行播放,如VLC,Windows Media Player,RealPlayer,在暴風影音,KMPlayer下不能播放

檔案太大的話無法正常播放,如我測試的dance.wmv 檔案大小:351M ,但是在realPlayer下可以播放,緩衝時間比較長,在Windows Media Player緩衝較小時間就可以播放。

注:

ts: the MPEG2/TS muxer. This the standard muxer used to stream MPEG2. This muxer can be used with any access method. Supported codecs are MPEG 1/2/4, MJPEG, H263, H264, I263, WMV 1/2 and theora for video, MPEG audio, AAC and a52 for theaudio stream.

ps: the MPEG2/PS muxer. This the standard muxer for MPEG 2 files(.mpg). It can be used with the file and http output methods. Supported codecs are MPEG 1/2 and MJPEG for video, MPEG audio and a52 for audio streams.