近期需要安装gstreamer,用到的是下面的安装命令
sudo apt-get install libgstreamer1.0-0 gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly gstreamer1.0-libav gstreamer1.0-doc gstreamer1.0-tools gstreamer1.0-x gstreamer1.0-alsa gstreamer1.0-gl gstreamer1.0-gtk3 gstreamer1.0-qt5 gstreamer1.0-pulseaudio
安装过程没有任何报错,但在运行官方Basic tutorial1的时候没有运行出任何结果。按理来说运行以后会播放一个视频,但我这里却什么都没有,运行后过几秒没动静,然后程序就结束了。
按照网上教程测试了一些基本命令,试图打开摄像头、播放音频、播放视频,然而全都得到报错。
gst-launch-1.0 v4l2src ! autovideosink
错误: 无法创建管道: 无组件“v4l2src”。
gst-launch-1.0 filesrc location=~/Music/CloudMusic/Entropy.mp3 ! decodebin ! audioconvert ! audioresample ! autoaudiosink
警告: 错误管道: 无组件“osssink”
gst-launch-1.0 filesrc location=/home/frost/tut1.webm ! decodebin name=decoder decoder. ! queue ! videoconvert ! xvimagesink
警告: 错误管道: 无组件“xvimagesink”
在官网查得,以上所有缺少的组件都来自 gstreamer1.0-plugins-good,用以下命令查已安装的包,会发现gstreamer1.0-plugins-good确实是有的。
apt list --installed | grep gstreamer*
然而奇怪的是,用上面apt list命令看到gstreamer各组件的版本号是1.14.5
但用下面这个命令,得到的结果却是1.14.0
gst-launch-1.0 --version
gst-launch-1.0 version 1.14.0
GStreamer 1.14.0
Unknown package origin
于是卸载gstreamer(我也不知道怎么卸载更好一些,我贸然使用sudo apt-get remove命令,最终导致有一些原本依赖gstreamer的应用也被卸载掉,系统险些崩掉)
完成后,gst-launch-1.0 --version居然还能出结果
于是用which看一下应用的位置
which gst-launch-1.0
which gst-inspect-1.0
/home/frost/anaconda3/bin/gst-launch-1.0
/home/frost/anaconda3/bin/gst-inspect-1.0
找到了罪魁祸首anaconda ,原来是因为anaconda的base环境里有安装gstreamer,而我又配置了环境变量,系统一直找到的都是anaconda里的gstreamer。
所以接下来激活base环境,conda list看一下哪些与gstreamer有关,最后移除这些包
conda activate base
conda list
conda remove gstreamer
conda remove gst-plugins-base
再次使用 gst-launch-1.0 v4l2src ! autovideosink 命令测试,系统已经找不到gst-launch-1.0了,两个which命令也不输出任何信息。
再次安装gstreamer,成功。