windows下编译gstreamer1.16.1
windows下编译gstreamer1.16.1
先说明没有编译通过,但是还是学到了很多东西,现在记录一下,也希望通过我的一点努力可以屏幕前的你节省更多的时间,做更多有意义的事,为中华编程多节省些人力。
几个常备地址
- glib 源码地址 链接
- gtk相关gstreamer中的glib来源在这里 链接
- gstreamer 工程地址 链接
- vcpkg微软的一个包管理器 链接下载自动编译一些开源好用的linux三方库的东西,看着不错;
直接下载已编译好的库
gstreamer
已编译的msvc版本 下载地址
找个最新的下载,目前是1.16.1不知道为什么只提供64位版本的下载
编译Glib
下面来在windows上编译,gstreamer
依赖于glib库,所以想到的首先编译glib的库
方法1:
使用vcpkg直接下载安装,这个是微软项目组维护的项目,下载下来在powershell中执行bootstrap-vcpkg.bat其他的看readme文档吧 项目地址 官方说明文档 链接
#执行此命令后会自动编译出vcpkg.exe具体怎么实现的我也没有细看;
bootstrap-vcpkg.bat
#下载源码并编译安装
vcpkg.exe install glib
方法2:
目前没有测试通过,就是下载源码自己编译了,具体没有尝试,对了上面第一种方法也是glib的文档中推荐的一种;
编译gstreamer1.16.1
接下来编译gstreamer
了,gstreamer
编译现在放在了一个项目中
cerbero
这个项目主要是指导用户怎么实现多平台编译,具体的文档自己看;我的编译说明下;
这个项目使用了python3.5+作为配置脚本,所以要安装python3;mingw
(注意不是ming-w64)因为内部要使用mingw-get下载依赖包;还有些其他的工具如打包工具什么的自行看下官方文档吧,然后进入目录执行
python3 ./cerbero-uninstalled -v visualstudio -c config/win32.cbc bootstrap
注意我使用的1.16.1版本这样编译不过提示找不到vs;查源码得知需设置环境变量,代码片段如下;
cerbero-1.16.1\cerbero\ide\vs\env.py
def get_program_files_dir():
if 'PROGRAMFILESX86' in os.environ:
# Windows 64-bit
return Path(os.environ['PROGRAMFILESX86'])
elif 'PROGRAMFILES' in os.environ:
# Windows 32-bit
return Path(os.environ['PROGRAMFILES'])
raise FatalError('Could not find path to 32-bit Program Files directory')
这个是我修改后的,主要是指明vs的安装根目录;
windows shell
set PROGRAMFILESX86=D:\Program Files (x86)
mingw shell
export PROGRAMFILESX86="D:\Program Files (x86)"
具体环境变量和我现在写的不一样,具体情况具体处理吧;之后就可以编译了,虽说我的编译出错了说是找不到libtool;MGOD 不知道这些项目在干什么,看日志cerbero 下载了整套的gcc编译链,为什么编译不过不得而知;
反思:
为什么使用gstreamer
gstreamer的结构性比较好,有强大的框架支撑,减少代码写作投入成本,另外内置dbus消息系统,方便开发;
为什么不用gstreamer
gstreamer内置的dbus不好移植(目前已经在vs2015上编译通过),另外gstreamer项目依赖了太多的GLP项目,这些项目又依赖太多的其它linux开源项目,内部编译太过复杂,需要熟悉每个库的使用和内部原理,强度比较大,不然很难保证商用级产品的发布;
由于依赖过于复杂不难配置发布时有太多无用的依赖,对发布周期要求较高;