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开源项目,内部编译太过复杂,需要熟悉每个库的使用和内部原理,强度比较大,不然很难保证商用级产品的发布;
由于依赖过于复杂不难配置发布时有太多无用的依赖,对发布周期要求较高;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章