Linux 下搭建流媒體伺服器

來源:互聯網
上載者:User

標籤:

http://blog.csdn.net/huangtaishuai/article/details/9836581

本文說明如何在 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:[email protected]: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 ... &"

Linux 下搭建流媒體伺服器

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.