安装qtcreator
Cerbero编译gstreamer
参考 Building from source using Cerbero,gstreamer通过Cerbero编译非常简单,可以在Readme.md中看到。
下载cerbero
$ git clone https://gitlab.freedesktop.org/gstreamer/cerbero gstreamer-cerbero
下载后的代码路径为:
/home/hui/gstreamer/gstreamer-cerbero
配置编译env
$ cd gstreamer-cerbero
git checkout 1.19.3
$ ./cerbero-uninstalled bootstrap
编译gstreamer
cerbero通过指定不同的config文件,编译不同平台binary,可以看到config目录下有android,ios,mac,win,linux等配置文件。
config/build-tools.cbc*
config/cross-android-arm64.cbc
config/cross-android-armv7.cbc
config/cross-android-universal.cbc
config/cross-android-x86-64.cbc
config/cross-android-x86.cbc
config/cross-ios-arm64.cbc
config/cross-ios-universal.cbc
config/cross-ios-x86-64.cbc
config/cross-lin-arm64.cbc
config/cross-lin-arm.cbc
config/cross-lin-x86.cbc
config/cross-macos-arm64.cbc
config/cross-macos-universal.cbc
config/cross-macos-x86_64.cbc
config/cross-uwp-universal.cbc
config/cross-win32.cbc
config/cross-win64.cbc
config/cross-win-arm64.cbc
config/cross-win-armv7.cbc
config/mingw-multilib-lin.cbc
config/mingw-multilib-win.cbc
config/osx-x86-64.cbc
config/win32.cbc
config/win64.cbc
编译ubuntu linux-x86
$ ./cerbero-uninstalled build gstreamer-1.0
cerbero-uninstalled支持参数如下:
cerbero-uninstalled argument command: invalid choice: 'gstreamer-1.0' (choose from 'buildone', 'build-deps', 'build', 'package', 'tag', 'check', 'deps', 'fetch', 'fetch-package', 'bundle-source', 'add-recipe', 'edit-cache', 'packageinfo', 'run', 'genxcconfig', 'fetch-cache', 'gen-cache', 'upload-cache', 'bootstrap', 'fetch-bootstrap', 'add-package', 'genlibfiles', 'wipe', 'list', 'list-packages', 'show-config', 'checkpackage', 'genvsprops', 'rdeps', 'shell', 'gensdkshell', 'graph', 'debug-packages')
编译完成后
交叉编译android
# Bootstrap for Android Universal on Linux
$ ./cerbero-uninstalled -c config/cross-android-universal.cbc bootstrap
配置qtcretor
新建project
menu->File
->New File or project
-> Import project
-> Import Existing Project
Choose
选择project路径
Project Name: gstreamer(可以是任意名字)
Location: 选择代码路径
编辑Project项
project项分为build和run两部门,因为gstreamer用的是cerbero编译,在qtcreator里面直接用cerbero的编译结果,不需要配置build部分,直接配置Run部分。
Run部分配置:
- Executable 指定可执行程序
- Command line arguments 命令行参数
- Working directory 设置代码目录
具体配置路径如下:
Executable:
/home/hui/gstreamer/gstreamer-cerbero/build/dist/linux_x86_64/bin/gst-launch-1.0
Command line arguments:
playbin uri=file:///home/hui/panda.mp4
Working directory:
/home/hui/gstreamer/gstreamer-cerbero/build/sources/linux_x86_64/gstreamer-1.0-1.19.3/gst
Working directory配置的路径不对的时候,debug的时候代码里面设置了断点,执行到断点的时候会显示汇编部门代码,所以根据汇编代码里面的路径提示,设置为gstreamer-1.0-1.19.3/gst后gst-launch就可以用起来了。
配置环境变量
这里有两个重要的环境变量,如果没有GST_PLUGIN_PATH,gstreamer启动时候就报错,比如找不到playbin,配置的时候在Enviroment部门添加一项,填入路径就可以。
GST_PLUGIN_PATH = /home/hui/gstreamer/gstreamer-cerbero/build/dist/linux_x86_64/lib/gstreamer-1.0
LD_LIBRARY_PATH = /home/hui/gstreamer/gstreamer-cerbero/build/dist/linux_x86_64/lib
也可以配置上gst-scanner环境变量
GST_PLUGIN_SCANNER = /home/hui/gstreamer/gstreamer-cerbero/build/dist/linux_x86_64/libexec/gstreamer-1.0/
配置好环境变量后就可以开始调试了。
下面是debug scan plugin的部分:
不方便的一点是plugin的代码如果不在gstreamer部门,那么就得修改project里面的Working directory才可以断点在代码里面,比如调试qtdemux,需要设置路径为/home/hui/gstreamer/gstreamer-cerbero/build/sources/linux_x86_64/gst-plugins-good-1.0-1.19.3/gst
,如果是gstreamer/gst下的代碼,就切換爲/home/hui/gstreamer/gstreamer-cerbero/build/sources/linux_x86_64/gstreamer-1.0-1.19.3/gst
,這個目前沒找到怎麼解決,支持多個目錄。