Ubuntu18.04 从源码上编译gstreamer 1.18.3

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

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

四、补充依赖包

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

安装的时候可以进入 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版本的问题,应该是系统自带的旧版本

 

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

 

 

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

现在就没什么问题了,能够正常播放音乐,试了下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 就构建完成了

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值