天天看点

Ubuntu18.04 从源码上编译gstreamer 1.18.3前言一、gstreamer是什么?二、环境配置三、初步构建四、补充依赖包五、再次构建 六、总结

本文章介绍了gstreamer是如何从源码上构建的,并且记录了一些遇到的问题以及解决方法,供大家参考

文章目录

目录

文章目录

前言

一、gstreamer是什么?

二、环境配置

三、初步构建

四、补充依赖包

五、再次构建

六、总结

前言

通过查阅官方文档和网上搜索教程,经过几天的努力,终于知道了如何从源码上编译gstreamer,将本次编译过程记录下来,供大家参考。

一、gstreamer是什么?

这是用来构建流媒体应用的开源框架,能够简化音视频应用的开发。

二、环境配置

通过查阅官方文档可知,需要 python 3.5+ 的版本,而Ubuntu18.04初始版本为 3.6.9,所以版本不需要改动,只需要一些操作即可

首先观察python版本及链接

ls /usr/bin/python*
           

然后删除旧的链接

rm -rf /usr/bin/python
           

再建立新的链接

sudo ln -s /usr/bin/python3.6 /usr/bin/python
           

下载pip3

sudo apt-get install python3-pip
           

给pip3换源,这里换成阿里云 

mkdir ~/.pip
cd ~/.pip && touch pip.conf
gedit pip.conf

输入以下内容
[global]
index-url = http://mirrors.aliyun.com/pypi/simple/
[install]
use-mirrors = true
mirrors = http://mirrors.aliyun.com/pypi/simple/
trusted-host = mirrors.aliyun.com
           

然后升级pip3

python -m pip install --upgrade pip
           

安装编译及安装的工具,这里meson选择 0.58.2 的版本

sudo pip3 install meson==0.58.2

sudo apt install ninja-build
           

安装依赖包 

sudo apt-get install build-essential dpkg-dev flex bison autotools-dev automake liborc-dev autopoint libtool gtk-doc-tools python3-pip bison flex

sudo snap install valgrind --classic

sudo sanp install cmake --classic

sudo apt install valgrind pkg-config

sudo apt-get install libgirepository1.0-dev libcap-dev libgtk-3-dev libunwind-dev clzip gobject-introspection libdw-dev
           

三、初步构建

接下来就是获取gstreamer源码了,在这里我们使用git下载,其版本为1.18.3

可以将 gst-build 放在 home 的用户目录下

这里本人放在 /home/aaron-liu,aaron-liu即为用户名,切换回普通用户

git clone -b 1.18.3 https://gitlab.freedesktop.org/gstreamer/gst-build.git
           

进入目录中,开始构建,可以使用 -Dprefix 来指定安装路径

meson builddir -Dprefix=/home/aaron-liu/gst-build/install
           
Ubuntu18.04 从源码上编译gstreamer 1.18.3前言一、gstreamer是什么?二、环境配置三、初步构建四、补充依赖包五、再次构建 六、总结

然后等待一段时间,在这过程中会下载很多的数据包,所以建议大家把Ubuntu换成国内源

下载好了以后,执行下面这条命令 

ninja -C builddir install
           

之后要设置环境变量,记得路径不要写错了

gedit ~/.bashrc

在末尾添加
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/aaron-liu/gst-build/install/lib/x86_64-linux-gnu:/home/aaron-liu/gst-build/install/lib/x86_64-linux-gnu/gstreamer-1.0

export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/home/aaron-liu/gst-build/install/lib/x86_64-linux-gnu:/home/aaron-liu/gst-build/install/lib/x86_64-linux-gnu/pkgconfig

激活环境变量
source ~/.bashrc
           

这时候可以播放音乐测试一下,media目录需要自己创建

在此目录下  /home/aaron-liu/gst-build

./install/bin/gst-launch-1.0 filesrc location=media/0.mp3 ! decodebin ! audioconvert ! audioresample ! autoaudiosink
           

不出意外的话还是出意外了,本人有加载出时间,但是没有任何声音

这里提示部分插件不能使用,找不到文件或目录

还记得meson的时候出现过很多的 NO 吗?

推测还是这个原因,依赖包还是没有全面安装,meson编译不完整

Ubuntu18.04 从源码上编译gstreamer 1.18.3前言一、gstreamer是什么?二、环境配置三、初步构建四、补充依赖包五、再次构建 六、总结

四、补充依赖包

查阅资料,需要安装依赖包,若是前面的构建报错,大概是依赖包的问题,所以可以先安装依赖包,再构建框架

安装的时候可以进入 root 用户安装

sudo apt-get install libxv-dev libasound2-dev libtheora-dev libogg-dev libvorbis-dev libbz2-dev libv4l-dev libvpx-dev libjack-jackd2-dev libsoup2.4-dev libpulse-dev faad libfaad-dev libfaac-dev libx264-dev libmad0-dev yasm
           

仍需安装依赖包,在meson编译的时候,会出现许多的 NO ,这表明还有很多的依赖包没有安装,导致meson无法完全编译

sudo apt-get install libgl-dev gudev-1.0 wayland-protocols libgbm-dev libjpeg-dev libopus-dev libvorbisidec-dev libflac-dev libmp3lame-dev libcaca-dev libdv-dev libmpg123-dev libraw1394-dev libavc1394-dev libiec61883-dev 
           
sudo apt-get install libshout-dev libspeex-dev libtwolame-dev librabbitmq-dev wildmidi flite libxkbcommon-x11-dev libmms-dev libmicrodns-dev libgme-dev libtesseract-dev libvisual-0.4 libssh-dev libsdl2-dev pocketsphinx
           
sudo apt-get install libwavpack-dev libopencv-dev libvulkan-dev libltc-dev bluez gudev-1.0 libusb-1.0 gudev-1.0 libva-dev gudev-1.0 libcmocka-dev libchromaprint-dev liblcms2-dev libdirectfb-dev libdca-dev libfdk-aac-dev libfluidsynth-dev libsndfile-dev
           
sudo apt-get install libpocketsphinx-dev libgupnp-igd-1.0-dev libbs2b-dev libgtest-dev libopenni2-dev libdvdnav-dev librtmp-dev libsbc-dev libsrtp2-dev libwebrtc-audio-processing-dev libopencore-amrnb-dev libcdio-dev libbluray-dev libshine-dev
           
sudo apt-get install libsoundtouch-dev libspandsp-dev libvo-aacenc-dev libvo-amrwbenc-dev libwildmidi-dev libx265-dev libzbar-dev libopenmpt-dev libmodplug-dev libmjpegtools-dev libkate-dev liblrdf-dev libde265-dev
           

五、再次构建 

删除之前的目录,重新编译安装 

rm -rf builddir/
rm -rf install/

meson builddir -Dprefix=/home/aaron-liu/gst-build/install

ninja -C builddir install
           

在meson的时候,出现了这个问题,查询了一下,发现是meson版本的问题,应该是系统自带的旧版本

Ubuntu18.04 从源码上编译gstreamer 1.18.3前言一、gstreamer是什么?二、环境配置三、初步构建四、补充依赖包五、再次构建 六、总结
Ubuntu18.04 从源码上编译gstreamer 1.18.3前言一、gstreamer是什么?二、环境配置三、初步构建四、补充依赖包五、再次构建 六、总结

 找了一下解决方法,大家可以试试

Ubuntu18.04 从源码上编译gstreamer 1.18.3前言一、gstreamer是什么?二、环境配置三、初步构建四、补充依赖包五、再次构建 六、总结
Ubuntu18.04 从源码上编译gstreamer 1.18.3前言一、gstreamer是什么?二、环境配置三、初步构建四、补充依赖包五、再次构建 六、总结
Ubuntu18.04 从源码上编译gstreamer 1.18.3前言一、gstreamer是什么?二、环境配置三、初步构建四、补充依赖包五、再次构建 六、总结

然后就可以继续编译了,可以看到 NO 少了一点。。。看来一些依赖包还是没有安装

Ubuntu18.04 从源码上编译gstreamer 1.18.3前言一、gstreamer是什么?二、环境配置三、初步构建四、补充依赖包五、再次构建 六、总结

现在就没什么问题了,能够正常播放音乐,试了下mp4,可以正常播放

Ubuntu18.04 从源码上编译gstreamer 1.18.3前言一、gstreamer是什么?二、环境配置三、初步构建四、补充依赖包五、再次构建 六、总结

通过调用 ./install/bin/gst-launch-1.0 来播放媒体文件,很麻烦,所以这里我们使用链接简化一下命令,此链接效果大家可以参考前面的python

sudo ln -s /home/aaron-liu/gst-build/install/bin/gst-launch-1.0 /usr/bin/gst-launch-1.0
           

然后试试效果

gst-launch-1.0 filesrc location=media/0.mp3 ! decodebin ! audioconvert ! audioresample ! autoaudiosink
           

这样就可以在任意地方直接使用 gst-launch-1.0 了 

Ubuntu18.04 从源码上编译gstreamer 1.18.3前言一、gstreamer是什么?二、环境配置三、初步构建四、补充依赖包五、再次构建 六、总结

 当然了gstreamer有三个命令行工具,所以我们还需要给其他两个工具也链接一下

sudo ln -s /home/aaron-liu/gst-build/install/bin/ges-launch-1.0 /usr/bin/ges-launch-1.0

sudo ln -s /home/aaron-liu/gst-build/install/bin/gst-inspect-1.0 /usr/bin/gst-inspect-1.0
           
Ubuntu18.04 从源码上编译gstreamer 1.18.3前言一、gstreamer是什么?二、环境配置三、初步构建四、补充依赖包五、再次构建 六、总结
Ubuntu18.04 从源码上编译gstreamer 1.18.3前言一、gstreamer是什么?二、环境配置三、初步构建四、补充依赖包五、再次构建 六、总结

六、总结

至此 gstreamer 1.18.3 就构建完成了

继续阅读