gstreamer有两种编译方式,分别是cerbero和meson,而在gstreamer某个版本之后就不再支持cerbero了。
meson
Meson是一个Python实现的开源项目,是一个快速、可扩展且用户友好的构建工具,用于构建软件项目。它提供了一种简化和自动化构建过程的方式,支持多种编程语言和平台。meson旨在简化软件项目的构建过程。它提供了许多有用的功能和灵活性,使开发人员能够更轻松地管理和构建他们的项目。
环境准备
gstreamer编译需要几个工具:
-
安装python,这里建议安装3.9版本。
-
安装git for windows.
-
安装visual studio 2019 community版本,并同时安装windows通用开发工具。
下载gstreamer仓库:
执行git clone命令下载gstreamer库,我们要编译的版本是1.22,将分支设置为1.22。
git clone
git checkout 1.22
打开编译环境命令行工具:
我们的编译目标平台是x86,编译器选择的是MSVC。打开VS2019自带的x86 Prompt。
这里如果不使用这个命令行工具,后续configure步骤会出现找不到ml.exe
切换到gstreamer仓库,进行configure
cd d:/gstreamer
meson setup --vsenv builddir --prefix=D:/gstreamer/builddir/lib
值得注意的是,你需要替换以上命令行的路径。--vsenv是为了指定MSVC编译器,--prefix是为了安装的时候把库安装到lib文件夹。configure的过程中可以看到编译器,平台等信息,如果不符合则ctrl-c切断运行过程。
这里configure的过程会比较长,而且会在github和gnome下载若干个开源库,需要有比较好的网络环境。
开始编译
在gstreamer目录下,执行以下命令:
meson compile -C builddir
编译器大概会编译9k+目标,大概编译20分钟。这里的图是重复编译,只有5k+目标。
安装
编译完成后,运行以下命令:
meson install -C builddir
把编译好的库安装到--prefix的路径,如果没有指定--prefix则会安装到C盘根目录。
执行完毕后可以看到lib文件夹已经有了编译好的库。
测试(可选)
meson还提供了测试gstreamer的功能:
meson test -C builddir --suite gstreamer
meson交叉编译arm64的gstreamer
交叉编译arm64的gstreamer有很多坑。
工具准备
- 源码
建议重新克隆一份gstreamer源码,否则需要清除meson的缓存。
- 编译工具
找到visual studio installer,点击修改按钮。
点击单个组件,安装以下工具:
- 创建vs2019的x86_arm64 prompt
右键任意一个prompt,打开所在文件夹。
将x86_x64 Cross Tools Command Prompt for VS 2019快捷方式复制一份,重命名为:x86_arm64 Cross Tools Command Prompt for VS 2019. 右键新的prompt,选择属性,将最后的vcvarsx86_x64.bat修改为vcvarsx86_arm64.bat
打开新的prompt,切换到gstreamer目录,后续操作都在这个prompt中进行.
- 创建交叉编译配置文件
在gstreamer源码目录创建arm64-MSVC.txt文件,输入以下文字:
[host_machine]
system = 'windows'
cpu_family = 'aarch64'
cpu = 'aarch64'
endian = 'little'
[properties]
needs_exe_wrapper = true
[binaries]
lib = 'lib.exe'
c = 'cl.exe'
c_ld = 'link.exe'
cpp = 'cl.exe'
cpp_ld = 'link.exe'
pkgconfig = 'false'
configure
在刚刚创建的prompt中进行configure操作:
meson setup --vsenv builddir --prefix=D:/gstreamer/builddir/build_arm64 --cross-file ./arm64-MSVC.txt
你需要将路径更改,configure会持续半小时左右,其中可能会多次弹出窗口提示某操作系统不符合meson的某个工具,直接按确定即可。
编译、安装与测试
后续的编译、安装和测试与上文一样。