一、引言
vlc是一跨多媒体播放器,可以播放本地媒体文件和网络串流,帮助我们排查音视频开发过程中遇到的问题。大部分情况下,我们只需要在Windows系统下安装vlc就可以了。但有一种情况是需要在Linux下安装vlc的:我们的音视频拉流软件(比如推流端)运行在Linux系统下,只能通过该Linux系统访问网络串流(比如摄像机的rtsp流),无法通过Windows系统访问这些网络串流。这个时候为了能判断该网络流的视频是否正常,我们就必须在Linux系统下安装vlc。
二、安装vlc
首先根据文章《MobaXterm无法调出图形界面》设置通过X11 Forwarding实现远程显示服务器的图形化程序。设置完后才能在远程连接上的Linux系统中启动vlc,本地Windows系统远程显示该vlc的界面。
su -
yum install https:///pub/epel/epel-release-latest-7.noarch.rpm
yum install https:///free/el/rpmfusion-free-release-7.noarch.rpm
yum install vlc
yum install vlc-core
yum install python-vlc npapi-vlc
安装后用root用户执行vlc命令, 可能会报错:VLC is not supposed to be run as root.Sorry.
修改 VLC 二进制可执行文件(每次VLC升级后,需要重新这两条命令修改可执行文件,并且如果 VLC 程序源码发生调整,该方法可能失效):
cp /usr/bin/vlc /usr/bin/vlc.backup
sed -i 's/geteuid/getppid/' /usr/bin/vlc
修改后就可以用root用户执行vlc命令了,但有时候vlc界面上的文字可能会乱码:
可以参考《CentOS gui 图形界面显示文字乱码》解决。
继续在控制台执行vlc命令,打开该Linux系统下的媒体文件:
可能还会报错:failed to open swrast和shaders not supported。然后播放界面黑屏,无法显示视频画面:
这时候得安装OpenGL:
yum install -y mesa-libGLES-devel.x86_64 mesa-dri-drivers
yum install mesa-libGL mesa-libGL-devel
yum install mesa-libGLU mesa-libGLU-devel
yum install freeglut freeglut-devel
yum install mesa-libGL-devel mesa-libGLU-devel freeglut-devel
安装完OpenGL后继续打开媒体文件,发现有视频了,但报错:alsa audio output error: cannot open ALSA device "default": 拒绝连接
这时候得在CentOS中安装或者升级alsa声卡,但这个过程非常麻烦,所以建议直接在vlc中把音频设置不启用:“偏好设置” -> “音频”,将"启用音频"的勾去掉,“保存”。
重新在vlc中打开媒体文件,就可以看到正常播放视频了: