Linux 下搭建流媒體服務器


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)

  1. wget packages.sw.be/rpmforge-release/rpmforge-release-0.5.2-2.el6.rf.i686.rpm

2、導入 GPG key

  1. rpm --import http://apt.sw.be/RPM-GPG-KEY.dag.txt

3、安裝 rpm 安裝包

  1. rpm -i rpmforge-release-0.5.2-2.el6.rf.i686.rpm

4、更新安裝源

  1. yum check-update

5、安裝 vlc

  1. 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)

  1. 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}'
舉例:

  1. 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 認證。

【轉碼】
媒體文件可能本身不是流媒體格式,這個時候需要轉碼再串流。舉例:

  1. 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 流:

  1. vlc pikesi.mkv -I "dummy" -L --no-inhibit --sout '#std{access=udp{ttl=1},mux=ts,dst=localhost:1234}'

然后,將 input_stream 改為網絡地址,進行 http 串流:

  1. 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 ... &"


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM