http://blog.csdn.net/huangtaishuai/article/details/9836581
------------------------------------------------------------------------------------------
VLC 流媒體服務器小試成功
1. 打開命令行服務,堅挺5554媒體端口
vlc.exe -I telnet --control telnet --telnet-password q7fmZ9s --rtsp-host 0.0.0.0:5554
2. 使用putty連接VLC命令行接口
telnet localhost 4212 using the password q7fmZ9s
3. 在vlc命令行接口中新增一個條目
new a_walk_to_remember vod enabled input D:\TDDOWNLOAD\1.avi
4. 在客戶中的vlc中- 打開網絡媒體- 輸入下面的東東就可以觀看大片啦
rtsp://192.168.50.23:5554/a_walk_to_remember
------------------------------------------------------------------------------------------
Ubuntu 下 vlc 做流媒體服務器
1、安裝Ubuntu;
2、去掉Ubuntu的防火牆,當然也可以自己配置防火牆,允許4212端口和5554端口;
3、安裝VLC服務器,這個見上面的博客文章;
然后配置VLC服務器,配置步驟如下:
1、在控制終端中運行
vlc --ttl 12 -vvv --color -I telnet --telnet-password videolan --rtsp-host 0.0.0.0:5554
2、通過telnet hostip 4212登錄到vlc的VLM界面,那個password 就是videolan;
3、在vlm界面上運行
new Test vod enabled
setup Test input my_video.mpg
4、在客戶端鍵入命令:
vlc rtsp://server:5554/Test
就可以看到節目了。
------------------------------------------------------------------------------------------
本文說明如何在 CentOS 6 服務器(無圖形界面)搭建以 VLC 為核心的直播流媒體服務器。
第一步,安裝第三方 yum 源。因為官方 yum 源中是不包含 VLC 安裝包的,為了不用考慮安裝包之間的依賴關系,使用第三方yum源的 yum 安裝方式,能極大地簡化 vlc 的安裝過程,將主要精力集中到如何使用 VLC 功能來搭建流媒體服務器。
(如果不想使用 yum 安裝的,請自行登錄 vlc 的官方網站,下載二進制安裝包或者源代碼參考官方文檔進行安裝,這里就不復述了。)
1、下載 RPMForge 知名第三方源的 rpm 安裝包(64位系統請下載 rpmforge-release-0.5.2-2.el6.rf.x86_64.rpm)
- wget packages.sw.be/rpmforge-release/rpmforge-release-0.5.2-2.el6.rf.i686.rpm
2、導入 GPG key
- rpm --import http://apt.sw.be/RPM-GPG-KEY.dag.txt
3、安裝 rpm 安裝包
- rpm -i rpmforge-release-0.5.2-2.el6.rf.i686.rpm
4、更新安裝源
- yum check-update
5、安裝 vlc
- yum install vlc
更多詳細資料,請移步:http://wiki.centos.org/AdditionalResources/Repositories/RPMForge
第二步,使用 VLC 功能搭建直播流媒體服務器。(點播沒有什么好談的,搭建一個 http 服務器即可,和 VLC 沒有什么太大關系,只是可以把媒體文件先用 vlc 轉碼成流媒體格式后,再放在 http 服務器中)
【UDP方式】
語法:
vlc input_stream --sout '#std{access=udp{ttl=1},mux=ts,dst=dest_ip:dest_port}'
舉例:(假設在服務器目錄中有媒體文件 pikesi.mkv,播放客戶端的 IP 為 192.168.1.77)
- vlc -I "dummy" -L --no-inhibit pikesi.mkv --sout '#std{access=udp{ttl=1},mux=ts,dst=192.168.1.77:1234}'
說明:
在 IP 為 192.168.1.77 的客戶端打開 vlc 播放器,選擇“打開網絡串流”,輸入 URL,udp://@:1234/ 即可播放。
-I "dummy" 表示不使用任何本地播放或控制接口,因為沒有圖形界面本地無法播放。
-L 表示循環,當媒體文件播放完后,循環重新播放。
--no-inhibit 表示禁用電源控制。此為桌面環境功能,默認打開,如果不強制關閉,會導致與 D-Bus 通訊失敗,vlc 無法啟動。
UDP推流的方式,只能用單播或者組播的方式往指定地址推送流,不用客戶端請求。(HTTP方式會監聽用戶請求,根據請求的用戶點對點推流)
【HTTP方式】
語法:
vlc input_stream --sout '#http{mux=ts,dst=:listen_port}'
或者
vlc input_stream --sout '#std{access=http{user=username,pwd=password},mux=ts,dst=:listen_port}'
舉例:
- vlc -I "dummy" -L --no-inhibit pikesi.mkv --sout '#std{access=http{user=k3,pwd=k3},mux=ts,dst=:6000/live.ts}'
說明:(假設服務器IP地址為 192.168.1.6 )
客戶端播放器打開 URL,http://k3:k3@192.168.1.6:6000/live.ts,即可播放。
如果服務器啟動代碼中去掉 {user=k3,pwd=k3},即客戶端播放時不需要 HTTP 認證。
【轉碼】
媒體文件可能本身不是流媒體格式,這個時候需要轉碼再串流。舉例:
- vlc -I "dummy" -L --no-inhibit pikesi.mkv --sout '#transcode{vcodec=h264,vb=800,fps=50,scale=1,acodec=mpga,ab=128,channels=2,samplerate=44100}:std{access=http,mux=ts,dst=:6000}'
在實際測試中發現一個問題,在 Linux 下對 rmvb 轉碼會沒有聲音(Windwos 下正常)。可能是 Linux 版本的 VLC 不能對 realplay cook audio 格式解碼的原因(有時間可以安裝一個桌面的 Linux 環境進行驗證,據說需要在編譯 FFMpeg 時打開某些功能選項)。
【UDP流輸入的HTTP串流】
輸入流不一定非要是文件,也可以是網絡流,比如前面的UDP流。
比如,首先往本地端口 1234 推送 UDP 流:
- vlc pikesi.mkv -I "dummy" -L --no-inhibit --sout '#std{access=udp{ttl=1},mux=ts,dst=localhost:1234}'
然后,將 input_stream 改為網絡地址,進行 http 串流:
- vlc -I "dummy" --no-inhibit udp://@:1234 --sout '#std{access=http,mux=ts,dst=localhost:6000}'
最后,客戶端參考“HTTP方式”播放流媒體。
====================================
注意事項:
1、注意防火牆放行相應端口。
2、不要重用端口。每個 http 方式的串流都必須使用一個獨立的端口。
3、vlc 不能用 root 用戶運行,如果設置開機自啟動,可以在配置文件使用這種方式:(假設有用戶名 sowell)
su sowell -c "vlc ... &"