1. 程式人生 > >Redhat 6.5 使用rpm安裝vlc

Redhat 6.5 使用rpm安裝vlc

Redhat 6.5 64位下使用rpm安裝vlc,vlc的版本是2.1.6,安裝完成之後測試vlc的檔案轉流和錄音轉流。

該文件中所用軟體rpm包都來自
https://pkgs.org/download/vlc
http://li.nux.ro/download/nux/dextop/el6/x86_64/

也可以下載打包資源:http://download.csdn.net/download/my_tiantian/9960815

1. 將以下幾個軟體包拷貝到伺服器/usr/local/vlc目錄下

x264-libs-0.142-7.20140728gitaf8e768.el6.nux.x86_64.rpm
x265-libs-1.9-1.el6.nux.x86_64.rpm
ffmpeg-libs-2.6.8-3.el6.nux.x86_64.rpm
vlc-core-2.1.6-2.el6.nux.x86_64.rpm
vlc-2.1.6-2.el6.nux.x86_64.rpm

2. 按照以上順序安裝軟體

軟體安裝

# yum localinstall /usr/local/vlc/[軟體包名稱]

注:軟體解除安裝 yum remove [軟體包名稱]

安裝過程中出現如下錯誤的解決辦法:

PackageKit-0.5.8-19.el6.x86_64 has missing requires of PackageKit-yum= (‘0’, ‘0.5.8’, ‘19.el6’)
PackageKit-0.5.8-19.el6.x86_64 has missing requires of PackageKit-yum-plugin = (‘0’, ‘0.5.8’, ‘19.el6’)

執行下面命令

#yum remove ‘rhn-check-1.0.0.1-16.el6.noarch’
#yum instal PackageKit-glib
#yum install abrt-addon-ccpp
#yum install PackageKit-yum
#yum install PackageKit-yum-plugin

3. 解決vlc不支援root賬號

安裝完成之後直接執行
#vlc
提示vlc不支援root賬號
解決方法;現在vlc可執行檔案應該安裝在/usr/bin/目錄下,先將其備份到別個路徑下,以備將來不時之需。然後用vi編輯器開啟/usr/bin/vlc,將裡面唯一一次出現的geteuid修改成getppid儲存退出即可。
注:若找不到geteuid,則將該檔案下載下來編輯好了再上傳

4. 開啟伺服器的8554埠

#vim /etc/sysconfig/iptables
-A INPUT -m state –state NEW -m tcp -p tcp –dport 8554 -j ACCEPT
-A INPUT -m state –state NEW -m udp -p udp –dport 8554 -j ACCEPT

# /etc/init.d/iptables restart 重啟生效

5. 測試vlc轉RTSP流

#vlc /home/htt/test.mp3 –sout “#rtp{sdp=rtsp://:8554/test}” –sout-all –sout-keep –loop
#vlc /home/htt/test.mp3 –sout “#duplicate{dst=rtp{sdp=rtsp://:8554/test}}” –sout-all –sout-keep
–loop

在客戶端輸入rtsp://10.8.9.34:8554/test地址接收流播放測試
如果安裝在伺服器,客戶端在區域網需要
vlc rtsp://10.8.9.34:8554/test –rtsp-tcp用命令列測試,暫時測試還不成功

6. 測試vlc HTTP協議傳輸流

#vlc /home/htt/test.mp3 –sout “#transcode{vcodec=none,acodec=mp3,ab=128,channels=2,samplerate=44100}:http{mux=mp3,dst=:8554/test}” –sout-all –sout-keep –loop

vlc /home/htt/test.mp3 –sout “#transcode{vcodec=none}:http{mux=mp3,dst=:8554/test}” –sout-all –sout-keep –loop

注:RTSP不成功的主要原因是:http://bbs.csdn.net/topics/391035051
rtsp連線已經建立起來,PLAY會話後伺服器也不停向客戶端傳送視訊流和音訊流的rtp包了,但內網機器卻抓不到rtp包。經分析,rtsp在SETUP會話時分別指定了伺服器和客戶端rtp和rtcp通訊時要用到的埠號。SETUP後客戶端向伺服器傳送了兩包rtp和rtcp包用的也是指定的埠,但是路由器在轉發這些包時應該是把指定埠號換成了其它埠號,因此伺服器發現埠號不對,向客戶端回覆了ICMP,說unreachable port,其後伺服器在PLAY會話後開始向客戶端(路由器公網IP)指定埠發rtp包,而路由器對這些埠號的資料包沒有轉發給內網機器。
解決的方案:(目前未實現)
客戶端vlc在SETUP後會向伺服器傳送的兩包rtp和rtcp,目的應該是為了NAT打洞,俺準備修改伺服器端的vlc(應該是呼叫的live555)原始碼,在SETUP後接收其後的rtp包,然後用其源udp埠替代原來rtsp SETUP協商的埠,這樣應該就能穿透NAT了
在ubuntu下重新編譯vlc 2.2.1原始碼;修改modules/stream_out/rtsp.c,在SETUP會話後新啟兩個thread(分別對應video和audio流),接收client傳送的rtp包,再修改server向client傳送rtp包時的埠號,搞定

7. 測試錄音轉發

MRL of the capture device
Linux:

  • v4l2:///dev/video0 v4l2攝像頭驅動模組
  • alsa://plughw:0,0 alsa 音效卡驅動
  • alsa://hw:0,0

Windows:

  • dshow://

    #vlc alsa://plughw:0,0 –sout “#transcode{vcodec=none,acodec=mp3,ab=33,channels=2,samplerate=11025}:http{mux=mp3,dst=:8554/test}” –sout-all –sout-keep –loop