GStreamer 是一个基于流水线的多媒体框架,其内部基于GObject,以C语言写成(参见Wikipedia)。GStreamer采用基于plugin和pipeline的体系结构,框架中所有的功能模块都是现成可以插拔的component,可以很方便地安装到任意pipeline上。
一、 GStreamer 环境
通常,在运行基于GStreamer开发的程序前,需要根据相应系统发行版本配置相应的环境,除非有特定需求,都建议直接下载已编译的安装包。最新版本(1.8.0)中支持的系统具体如下:
- Linux
大部分Linux发行版均已提供GStreamer package,但部分发行版由于法律上原因会对GStreamer plugins进一步切割,因此可能不会包含gst-plugins-bad,
gst-plugins-ugly及gst-libav packages.
不同架构的package都有支持
提供相应版本MSI安装器。SDK共提供三种文件,分别为:
- Runtime :运行GStreamer程序必需的文件,可能会随程序一同发布
- Development :开发GStreamer程序额外所需的文件
- Merge Modules:为GStreamer程序部署SDK所需的额外文件
提供相应的框架
提供可被集成入Android NDK的GStreamer Binaries
提供可被集成如XCode的GStreamer Binaries
二、使用Cerbero编译GStreamer SDK
Cerbero是一个服务于开源项目的多平台编译系统,它为不同体系、发行版的平台编译并创建本地化package。
项目通过recipes文件(.recipe)来定义,文件中描述了需要编译的项目信息,如name, version, license, sources和编译方法。同时,还提供了一些用于后续打包的文件。
Packages通过packages文件(.package)来定义,文件中描述了包信息,如name, version, license, maintainer和其他用于打包的内容。一个包内部包含了一系列recipes,安装时将进行展开。
2.1 基础环境配置
Cerbero为各个平台提供了启动引导项,但仍需要一些基础环境来支持bootstrap。
- Linux
- OSX
- XCode
- CMake : http://www.cmake.org/cmake/resources/software.html
- Windows
- Python2.7 : https://www.python.org/downloads/
- Wix 3.5 : http://wix.codeplex.com/releases/view/60102
- Microsoft SDK 7.1 : http://www.microsoft.com/en-us/download/details.aspx?id=8279
- Windows Driver Kit 7.1.0 : http://msdn.microsoft.com/en-us/windows/hardware/hh852365
Cerbero必须在MinGW shell中运行,当完成上述所有安装后,必须为shell配置python和git的路径:
- 32-bit windows
- 64-bit windows
2.2 使用说明
通过已配置好的git将cerbero repo克隆至本地:
git clone git://anongit.freedesktop.org/gstreamer-sdk/cerbero |
虽然文件夹中含有setup.py,但cerbero工具使用前并不需要安装。它直接使用./cerbero-uninstalled脚本实现功能。
默认情况下,cerbero会读取$HOME/.cerbero/cerbero.cbc配置文件来生成编译选项,该文件是一个python代码,支持重写或自定义。当该文件不存在时,cerbero会尝试使用默认选项进行编译,通常默认选项在所支持平台上都能顺利运行。
如不希望每次运行时替换cerbero.cbc文件,也可使用-c/-config选项指定.cbc配置文件。
$ ./cerbero-uninstalled -c config/win32.cbc [command] |
如需进一步了解cerbero-uninstalled所支持的命令,可使用--help列出。
$ ./cerbero-uninstalled --help |
2.3 Windows7 编译GStreamer SDK 1.0 for Windows
下列编译步骤中如遇到问题,可先在 问题记录中进行查找,如无对应再寻找其他方法解决。
第一次使用cerbero前,你需要运行bootstrap命令,它会通过packages manager来安装所有编译必需的部分,该操作会消耗较长时间(几个小时甚至更多)。
$ ./cerbero-uninstalled -c config/win32.cbc bootstrap 或 $ ./cerbero-uninstalled -c config/win64.cbc bootstrap |
编译环境成功配置后,进行打包
$ ./cerbero-uninstalled -c config/win32.cbc package gstreamer-1.0-sdk或$ ./cerbero-uninstalled -c config/win64.cbc package gstreamer-1.0-sdk |
打包完成后将生成如下文件:
2.4 Ubuntu 14.0.1 编译GStreamer SDK 1.0 for AndroidAndroid SDK只能在Linux主机上使用config/cross-android.cbc进行编译。下列编译步骤中如遇到问题,可先在 问题记录中进行查找,如无对应再寻找其他方法解决。
- git及python2.7安装
- bootstrap
- package
三、问题记录3.1 如遇部分remote包无法下载,可考虑番羽土蔷后重试https://github.com/getlantern/lantern3.2 去除download certificate验证3.3 补全Win7.1 SDK配置安装
解决办法: 安装Win7.1 SDK GRMSDKX_EN_DVD.7z(带X),只有该包中存在amd64.msi
3.4 Cosole Unicode
The most secure solution is this one: Go to your Registry keyHKEY_CURRENT_USER\Software\Microsoft\Command Processor
and add String valueAutorun
=chcp 65001
. http://stackoverflow.com/questions/388490/unicode-characters-in-windows-command-line-how
3.5 Can‘t find ‘page‘ file: Invalid argument
C:\MinGW\msys\1.0\home\sniper\cerbero\sources\windows_x86\clutter-1.8.4\clutter\Makefile http://mingw.5.n7.nabble.com/windres-unavoidably-reports-syntax-error-at-rc-1-td16052.html
3.6 dbug-glib-0.100
路径问题,将文件夹C:\Users\pandm\Desktop\dbus-glib-0.100\dbus\.libs中下列文件
- dbus-bash-completion-helper.exe
- dbus-binding-tool.exe
- libdbus-glib-1-2.dll
3.7 Unbuntu Android SDK libmad 缺失
解决方法为去除对libmad项的依赖,具体文件有:
- cerbero/recipes/gst-plugins-ugly-1.0.recipe
- cerbero/recipes/gst-plugins-ugly-1.0-static.recipe
- cerbero/packages/gstreamer-1.0-codecs-restricted.package
时间: 2024-08-02 00:11:43