2014年1月17日 星期五

使用 VLC 架設串流伺服器

以下使用文字記錄使用VLC來當成串流伺服器的操作過程。喜歡看圖的可以參考 William.L 所整理的SlideShare

1. 安裝 VLC 

sudo apt-get install ffmpeg
sudo apt-get install vlc

2. 設定使用 http 進行串流

[媒體] -> [stream]
[開啟媒體] -> [檔案] -> [增加] 欲串流的檔案後,選擇[串流]
[來源] 直接選擇 [Next]
[Destination Setup] -> New destionation 改為 HTTP, 選擇 [Next], 按下增加
[Transcoding Options] -> 取消 Activate Transcoding,
針對不同bitrate需要新增不同的設定檔案,以256kb為例,設定檔內容如下:
Encapsulation:MP4/OOV
視訊編碼器:H-264, bitrate: 256kb/s, 其他維持不變
音訊編碼器:MPEG Audio, bitrate 12kb/s, channel 1, sample rate 8000
此時回到 VLC 主畫面,直接進行播放。
遠端的 Client 可以使用 http://vlc-streaming-server-ip:8080/ 進行連線

3. 設定使用 RTSP 進行串流

a. RTSP over UDP 的設定
基本設定
vlc -vvv 140000.mp4 --sout '#rtp{sdp=rtsp://192.168.0.169:8080/test.sdp}'
動態降低 bitrate 至 64kbits (需安裝ffmpeg與libavcodec)
vlc -vvv 140000.mp4 --sout '#transcode{vcodec=h264,vb=64,scale=1,acodec=mp4a,ab=12,channels=1,samplerate=8000}:rtp{sdp=rtsp://192.168.0.169:8080/test.sdp}'
將 input stream 降低 bitrate 後,讓 vlc client 進行連線
vlc -vvv rtsp://192.168.0.2:554/livestream --sout '#transcode{vcodec=h264,vb=64,scale=1,acodec=mp4a,ab=12,channels=1,samplerate=8000}:rtp{sdp=rtsp://192.168.0.169:8080/test.sdp}'
b. 根據不同的bitrate,設定多個 streaming,提供使用者動態選擇
b1. 先透過 GUI, 設定 VLC 支援 telnet interfcae,記得要設定密碼
b2. 設定 vlm.conf 如下
################
# rtsp streams #
################ 
# Use below command to execute this script
# vlc -vvv --color --vlm-conf vlm.conf --rtsp-host 192.168.0.169 --rtsp-port=8080
# Use below url to connect to VLC Stream server
# rtsp://192.168.0.169:8080/TEST_512 
new Stream1 vod enabled
new Stream1 vod enabled

setup Stream1 input video1.mp4
setup Stream2 input video2.mp4

setup Stream1 output
setup Stream2 output

b3. 啟動 VOD(Video On Demand) 服務 
vlc -vvv --color --vlm-conf vlm.conf --rtsp-host 192.168.0.169 --rtsp-port=8080 
b4. client 要求 streaming 
使用 URL rtsp://192.168.0.169:8080/TEST_512 進行連線

參考資料

  • 手動安裝 libavcodec
  • VLC command line 命令查詢
  • 一個vod 的例子