概述:
流媒體技術是一種支援多媒體資料流通過網路從伺服器向用戶端傳送,接受方邊接收邊播放的技術。
對網路服務的要求:
- 必須即時傳輸資料,僅容許少量的延遲(數百毫秒);
- 傳送資料相對可靠性,容忍一定數量的資料丟失;
- 保證一定的頻寬,以保證傳輸的資料量能夠即時播放。
架設基於vlc的UDP伺服器
UDP(使用者資料包通訊協定),是 OSI 參考模型中一種不需連線的傳輸層協議,提供面向事務的簡單不可靠資訊傳送服務。是一個簡單的面向資料報的傳輸層協議,與連線導向的TCP協議相對應。
正是由於UDP協議沒有TCP的擁塞控制和發送速率控制,也沒有提供資料轉送的可靠性保證,但是卻保證了傳輸的即時性,所以被流媒體應用系統所廣泛採用。主要用來支援那些需要在電腦之間傳輸資料的網路應用,包括網路視頻會議系統在內的眾多的客戶/伺服器模式的網路應用都需要使用UDP協議。
利用vlc(VLC media player 1.0.1)實現UDP伺服器:
首先在伺服器端開啟VLC播放器,如下:
接下來選擇媒體菜單—->選擇進階開啟檔案,介面如下:
單擊添加按鈕,可以將磁碟上的媒體檔案添加進來,然後在右下角的下拉式功能表中選擇流,進入下一步,如下:
在上面的的介面中,單擊目標按鈕,進行UDP設定,添加你想要的發送到的用戶端,可以設定多個。另外,如需要轉碼則把啟用轉碼選項打鉤,其他可以選擇預設的設定,不需要更改也可,當然也可以根據你的要求進行輸出配置,進入下一步,視頻就開始在伺服器端進行播放,並向目標端發送流資訊。
接下來,在用戶端開啟VLC播放器,單擊媒體菜單,選擇開啟網路串流,出現如下介面:
選擇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登入。介面如下所示:
當點擊串連後,要求輸入密碼: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下不能播放
命令如下:http://localhost/fileName
檔案太大的話無法正常播放,如我測試的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.