Redhat 6.5 使用rpm安装vlc

来源:互联网 发布:mysql 时间戳 编辑:程序博客网 时间:2024/05/16 06:43

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