接触qnx系统也有两三年了,一直都是基于其上的mmr进行多媒体播放器的开发。 但是这个mmr资料少,且很多参数,资料上没有,必须给钱向qnx公司咨询才行。 于是就有这么一个念头,移植一个开源的播放器到qnx平台上。之前也有尝试过移植VLC和gstreamer,但是因为工作时间比较忙,草草的尝试了一下,有因为需要自己动手编写最终的音视频输出插件,觉得有些麻烦,然后就这样放弃了。
这次因为恰好项目结尾,有一点空闲时间,于是就再次进行了一番尝试,现将过程一一记录下来。
- 各个库的版本
- glib: 2.63.0 (http://ftp.gnome.org/pub/gnome/sources/glib/2.63/glib-2.63.0.tar.xz)
- ffmpeg:4.2.1 (http://ffmpeg.org/releases/ffmpeg-4.2.1.tar.xz)
- mpg123: 1.25.13 (http://www.mpg123.de/download/mpg123-1.25.13.tar.bz2)
- fdk-aac: 2.0.1 (https://downloads.sourceforge.net/opencore-amr/fdk-aac-2.0.1.tar.gz)
- gstreamer: 1.16.1 (https://gstreamer.freedesktop.org/src/gstreamer/gstreamer-1.16.1.tar.xz)
- gst-plugin-base: 1.16.1 (https://gstreamer.freedesktop.org/src/gst-plugins-base/gst-plugins-base-1.16.1.tar.xz)
- gst-plugin-good: 1.16.1 (https://gstreamer.freedesktop.org/src/gst-plugins-good/gst-plugins-good-1.16.1.tar.xz)
- gst-plugin-bad: 1.16.1 (https://gstreamer.freedesktop.org/src/gst-plugins-bad/gst-plugins-bad-1.16.1.tar.xz)
- gst-libav: 1.16.1 (https://gstreamer.freedesktop.org/src/gst-libav/gst-libav-1.16.1.tar.xz)
-
测试使用到的库、插件以及bin文件
这里用到的库,是将out/lib/目录下生成安装的所有lib,插件输出目录为 out/lib/gstreamer-1.0/, 我这边进行验证测试用到的plugin如下:
libgstaudioparsers.so libgstmpg123.so
libgstautodetect.so libgstplayback.so
libgstcoreelements.so libgstvideoconvert.so
libgstdeinterlace.so libgstvideofilter.so
libgstfdkaac.so libgstvideoparsersbad.so
libgstlibav.so libqnxaudio.so
libqnxvideo.so
生成的可执行文件存放在 out/bin/目录下,另外还有一个特别的可执行文件gst-plugin-scanner,在out/libexe目录下。使用到的所有可执行文件如下:
gst-inspect-1.0 #用于查看插件相关信息
gst-launch-1.0 #用于播放音乐或视频
gst-plugin-scanner #被用于扫描插件
-
测试用的环境
在进行正式的测试播放音视频之前,还需要设置一些环境变量。
这里假设在qnx系统的根目录下新建了三个目录, gst_app(存放可执行we你按),gst_lib(用于存放所有的lib库),gst_plugin(用于存放所有的插件)。
然后写一个脚本文件来设置环境变量,脚本的内容如下:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/gst_lib/ #将lib路径放入库搜索的路径当中去
export GST_PLUGIN_PATH=/gst_plugin/ #指明插件所在路径
export GST_PLUGIN_SCANNER=/gst_app/gst-plugin-scanner #指明插件扫描器的所在
export GST_PLUGIN_SYSTEM_PATH=/gst_plugin/ #指明系统插件所在路径
加入这个脚本文件名为: setEnv.sh, 那么在进行测试之前需要先执行:
. ./setEnv.sh
- 播放音视频
加入插入U盘后,qnx系统加载U盘的路径为 /fs/usb0/ ,且在U盘根目录下有test.mp3 和 test.mkv两个文件, 然后setEnv.sh这个脚本文件,就放在gst_app目录下:
cd /gst_app/
. ./setEnv.sh #注: 这一句在再次重启之前,只需要执行一次
#播放音乐
./gst-launch-1.0 playbin3 uri=file:///fs/usb0/test.mp3
#播放视频同样
./gst-launch-1.0 playbin3 uri=file:///fs/usb0/test.mkv
接下来就依次来展示各个库的移植编译以及配置过程。
- 其大致步骤如下:
- 编译glib库
- 编译gstreamer库
- 编译gst-plugin-base库
- 根据实际情况编译其他plugin库以及其依赖的第三方库
let’s go…
================================ To be continue…=================================