Ubuntu18.04 从源码上编译gstreamer 1.18.3

发布于:2022-07-26 ⋅ 阅读:(1203) ⋅ 点赞:(1)

本文章介绍了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

安装编译及安装的工具 

sudo pip3 install meson
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

然后等待一段时间,在这过程中会下载很多的数据包,所以建议大家把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 ~/.bachrc

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

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

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

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

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

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

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

四、补充依赖包

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

安装的时候可以进入 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 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


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 libopencore-amrw-dev libcdio-dev libbluray-dev libshine-dev

五、再次构建 

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

rm -rf builddir/
rm -rf install/

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

ninja -C builddir install

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

通过调用 ./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 了 

 当然了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

六、总结

至此 gstreamer 1.18.3 就构建完成了


网站公告

今日签到

点亮在社区的每一天
去签到