GStreamer SDK 1.0 Build Via Cerbero
2016-07-20 16:36
691 查看
本文编写时基于
GStreamer最新版本(1.11.0)中支持的系统具体如下:
Linux
大部分Linux发行版均已提供GStreamer package,但部分发行版由于法律原因等会对GStreamer plugins进一步切割,因此可能不会包含gst-plugins-bad、gst-plugins-ugly及gst-libav pacakges
OpenBSD
不同架构的package都有支持
Windows
提供相应版本MSI安装器,SDK共提供三种文件,分别为:
Runtime:运行GStreamer程序必需的文件,可能会随程序一同发布
Development:开发GStreamer程序额外所需的文件
Merge Modules:为GStreamer程序部署SDK所需的额外文件
Mac OS X
提供相应的框架
Android
提供可被集成入Android NDK的GStreamer Binaries
IOS
提供可被集成入XCode的GStreamer Binaries
Source
gstreamer
gstreamer-plugins-base
gstreamer-plugins-good
gstreamer-plugins-ugly
gstreamer-plugins-bad
gst-libav
…其他模块
由于Cerbero使用Python2.x(>= 2.6)开发编译脚本,因此不论是什么平台都必须安装Python,本教程中安装版本为v2.7。除此之外,各平台所需依赖项各有不同。具体如下:
XCode
CMake : Download
Note:
此次实际编译并未涉及OSX平台,因此IOS及OSX相关部分编译并未测试,如需编译SDK,可参照教程中通用部分或根据github自行完成。
* Git
如当前环境中没有git工具,请先手动安装完成。
安装完成后,配置git信息。
Python 2.x
确认所使用的发行版中python版本>= 2.6且已添加python的argparse模块(Python2.7已默认支持)。
如出现正常安装步骤报错时,请尝试先手动
同时Cerbero默认使用Makefile进行所有项目的编译,类似Unix,因此如需在Windows中正常编译,必须首先配置Unix编译环境。
![](http://i1.piimg.com/567571/9dbf47767ec601d9.png)
具体需安装项如下:
Python2.7 : Download
切记只能安装2.7版本,3.x版本并不支持
CMake : Download
下载的x86版本可同样支持x64版本编译,安装时勾选添加至环境变量。
Git : Download
安装过程中选择“Checkout as-is, commit as-is”选项,其他保持默认
安装完成后,配置git信息。
git config –global user.name “xxxx”
Msys/MinGW : Download
勾选”Basic Setup”所有项进行安装。
此处选择所有项为便捷做法,如有兴趣,可尝试去除如gcc-ada等项,以最小化安装
Wix 3.5 :Download
Windows MSI打包工具,默认安装即可
Microsoft SDK 7.1 : Download
安装Win7.1 SDK GRMSDKX_EN_DVD.7z(带X),只有该包中存在amd64.msi,否则安装时因找不到文件报错而安装失败。
如安装过程中报错不能安装依赖于 .NET Framework 4的组件,则请下载.NET 4并安装后重试。
Windows Driver Kit 7.1.0 : Download
安装GRMWDK_EN_7600_1.iso
安装完上述项后,由于Cerbero必须在MinGW shell中运行,因此必须为shell配置部分程序环境变量:
windows x86
windows x64
Note:
如生成的“.profile”文件与shell不位于同一路径下,请手动拷贝至同一路径下。并在shell中运行python、git、cmake命令确认已生效。
至此,Cerbero基础环境已搭建完成。
编译之前,需在shell中运行如下命令行进行版本库克隆:
clone成功后,目录结构(v1.11.0)如下图所示:
此处最好将cerbero完整文件夹内容拷贝值/home/usrxxx/下,以避免后面compile过程中出现完整路径过长而导致失败问题。具体可参造4.5小节内容。
可以看到文件夹上有勾选标号提示,这是ToriseGit的功能,Windows下平台可以更加便捷直观地查看git库文件,在裁剪SDK时有较大帮助,建议安装。当然,不安装也不影响后续操作。
可以看到根目录下存在
其输出内容为:
上面列出的命令实际上都定义于
虽然
[-c CONFIG]
cerbero-unistalled编译时,如未使用该选项,则cerbero-unistalled使用默认配置(等价于变量)进行编译;如指定cbc文件,则使用指定配置完成编译。
可选择的CONFIG文件位于/config路径下,如下图所示:
list
列出所有可选的recipes;recipe用于指定某个模块的源、依赖项、编译步骤、产出库(动态、静态)等编译过程相关信息。
可选择的recipe文件位于/recipes目录下,由于数量较多,截取部分如下图所示:
list-packages
列出所有可打包的packages;打包实质上是将编译过程中各模块相关文件(头文件、库等),按照对应的package文件内容取出至指定路径,压缩并打包为对应平台文件。
可选择的package文件位于/packages路径下,如下图所示:
bootstrap
下载并安装当前环境下编译时所需工具
build
编译某个recipe,包括其依赖项
buildone
编译某个recipe,不包括其依赖项
cleanone
清理某个recipe
package
打包某个package,递归遍历所有依赖项。
wipe
清理之前build过程中产生的所有文件,慎用
选择只简单指定
模块依赖项多,打包操作内部遍历后整体所需编译模块较多,造成编译耗时长(虚拟机测试2天左右)
部分特定模块打包时并未勾选,造成安装编译后SDK无法提供相应环境支持
如可接受上述问题,则可按照如下步骤进行基础编译:
编译成功后,将生成对应平台文件,如windows中
Note:
编译过程中如出现错误,可先跳转至章节 “4. 问题-解决方法汇总”查看是否已有记录。
Projects通过recipes文件(.recipe)来定义,文件中描述了需要编译的项目信息,如name, version, license, sources和编译方法。同时,还提供了一些用于后续打包的文件。
Packages通过packages文件(.package)来定义,文件中描述了包信息,如name, version, license, maintainer和其他用于打包的内容。一个包内部包含了一系列recipes,安装时将进行展开。
Fetch
Extract
Configure
Compile
Install
Post_install
第一次编译时,必须Fetch相关源以进行后续步骤,但通常在编译成功后,我们将不再希望所有模块每次编译时都自动更新为最新版本(稳定性不可控),此时可以将Fetch步骤去除,之后的build便会基于已有的源包进行编译。
./cerbero/build/recipe.py
其中commit等可从已clone下来的git版本库中获取,需为对应版本commit id。修改完成后,确认是否有其他相关内容需一并修改,此处需自行调整。
clean后重新build,测试通过。
修改version、url地址,url地址需访问链接进行手动确认,方法通常为去除末端版本字段,如
键入该命令行,可开始
SDK实质上是package所有recipe build后相关文件的产物,对应编译中参与的角色(总package、子package、模块),裁剪也分为如下三种:
首先整体浏览下该package文件内容:
从面的代码中可以看出,裁剪过程中,只需要关注gstreamer-1.0.package文件的如下字段:
packages
platform_packages
对于不需要的子package可以直接使用
以
实际上,
以
:plugins_codecs_devel字段不存在
此时可以清晰地看到,
以
以
解决办法为根据提示配置信息:
将参数
The most secure solution is this one: Go to your Registry key HKEY_CURRENT_USER\Software\Microsoft\Command Processor and add String value Autorun = chcp 65001.
msgfmt是gettext中的一部分,使用gettext0.19.5中发现该系列程序运行会出错,而在gettext0.18.2中并未出现该问题。目前采用的方法是恢复使用0.18.2系列msgfmt程序替代。
Download
查找到根本问题为make过程中对应.o文件拼接后路径过长
需cebero文件夹内容直接放置在home/usrxx/目录下以减少完整路径长度。
./recipes/gst-plugins-ugly-1.0.recipe
./recipes/gst-plugins-ugly-1.0-static.recipe
./packages/gstreamer-1.0-codec-restricted.package
GStreamer v1.11.0版,文中提及所有目录结构、文件、模块等信息也均以v1.11.0为标准。后续如GStreamer官方SDK有做较大变动,请自行适配。
1. GStreamer Introduction
GStreamer是一个基于流水线的多媒体框架,其内部基于GObject,以C语言写成(参见Wikipedia)。GStreamer采用基于plugin和pipeline的体系机构,框架中所有的功能模块都是可插拔的plugins,可以很方便地安装到任意pipeline上。1.1 GStreamer 环境
通常,在运行基于GStreamer开发的程序前,需要配置开发平台所需环境,建议直接下载已编译的安装包,实在有特定需求(如裁剪、特定库支持)时,再考虑手动编译SDK。GStreamer最新版本(1.11.0)中支持的系统具体如下:
Linux
大部分Linux发行版均已提供GStreamer package,但部分发行版由于法律原因等会对GStreamer plugins进一步切割,因此可能不会包含gst-plugins-bad、gst-plugins-ugly及gst-libav pacakges
OpenBSD
不同架构的package都有支持
Windows
提供相应版本MSI安装器,SDK共提供三种文件,分别为:
Runtime:运行GStreamer程序必需的文件,可能会随程序一同发布
Development:开发GStreamer程序额外所需的文件
Merge Modules:为GStreamer程序部署SDK所需的额外文件
Mac OS X
提供相应的框架
Android
提供可被集成入Android NDK的GStreamer Binaries
IOS
提供可被集成入XCode的GStreamer Binaries
Source
1.2 GStreamer内部模块
依据plugins功能及实现算法性能的不同,GStreamer将其分为如下模块:gstreamer
gstreamer-plugins-base
gstreamer-plugins-good
gstreamer-plugins-ugly
gstreamer-plugins-bad
gst-libav
…其他模块
2. Cerbero编译系统
Cerbero是一个服务于开源项目的多平台编译系统,它为不同体系、发行版的平台编译并创建本地化package。2.1 Cerbero基础环境搭建
虽然Cerbero已经为各个平台提供了bootstrap(启动引导项),但仍需要一些基础环境来支持bootstrap。由于Cerbero使用Python2.x(>= 2.6)开发编译脚本,因此不论是什么平台都必须安装Python,本教程中安装版本为v2.7。除此之外,各平台所需依赖项各有不同。具体如下:
2.1.1 OSX
在OSX上你需要安装如下软件:XCode
CMake : Download
Note:
此次实际编译并未涉及OSX平台,因此IOS及OSX相关部分编译并未测试,如需编译SDK,可参照教程中通用部分或根据github自行完成。
2.1.2 Linux(以Ubuntu为例)
测试环境为Ubuntu 14.04,其他版本或发行版仅供参考。需确认如下软件是否安装:* Git
如当前环境中没有git工具,请先手动安装完成。
安装完成后,配置git信息。
git config --global user.email "xxxx@xxx.com" git config --global user.name "xxxx"
Python 2.x
确认所使用的发行版中python版本>= 2.6且已添加python的argparse模块(Python2.7已默认支持)。
如出现正常安装步骤报错时,请尝试先手动
sudo apt-get update && upgrade完善系统后重试。
2.1.3 Windows
Windows中环境配置较为复杂,编译SDK通常也相对耗时较长,但由于其中Directshow Plugins需使用到Directshow base classes,仍依赖Microsoft编译器和SDK完成编译,所以也无法通过Linux系统完美跨平台编译。同时Cerbero默认使用Makefile进行所有项目的编译,类似Unix,因此如需在Windows中正常编译,必须首先配置Unix编译环境。
![](http://i1.piimg.com/567571/9dbf47767ec601d9.png)
具体需安装项如下:
Python2.7 : Download
切记只能安装2.7版本,3.x版本并不支持
CMake : Download
下载的x86版本可同样支持x64版本编译,安装时勾选添加至环境变量。
Git : Download
安装过程中选择“Checkout as-is, commit as-is”选项,其他保持默认
安装完成后,配置git信息。
git config --global user.email "xxxx@xxx.com"
git config –global user.name “xxxx”
Msys/MinGW : Download
勾选”Basic Setup”所有项进行安装。
此处选择所有项为便捷做法,如有兴趣,可尝试去除如gcc-ada等项,以最小化安装
Wix 3.5 :Download
Windows MSI打包工具,默认安装即可
Microsoft SDK 7.1 : Download
安装Win7.1 SDK GRMSDKX_EN_DVD.7z(带X),只有该包中存在amd64.msi,否则安装时因找不到文件报错而安装失败。
如安装过程中报错不能安装依赖于 .NET Framework 4的组件,则请下载.NET 4并安装后重试。
Windows Driver Kit 7.1.0 : Download
安装GRMWDK_EN_7600_1.iso
安装完上述项后,由于Cerbero必须在MinGW shell中运行,因此必须为shell配置部分程序环境变量:
windows x86
echo 'export PATH="$PATH:/c/Python27:/c/Program Files(x86)/Git/bin:/c/MinGW/bin/
windows x64
echo 'export PATH="$PATH:/c/Python27:/c/Program Files/Git/bin:/c/MinGW/bin/"' > ~/.profile
Note:
如生成的“.profile”文件与shell不位于同一路径下,请手动拷贝至同一路径下。并在shell中运行python、git、cmake命令确认已生效。
至此,Cerbero基础环境已搭建完成。
2.2 Cerbero基础编译过程
此处以Windows平台编译为示例,Linux可参照进行,步骤一致,唯一区别为打包后文件格式不同。编译之前,需在shell中运行如下命令行进行版本库克隆:
git clone git://anongit.freedesktop.org/gstreamer/sdk/cerbero
clone成功后,目录结构(v1.11.0)如下图所示:
此处最好将cerbero完整文件夹内容拷贝值/home/usrxxx/下,以避免后面compile过程中出现完整路径过长而导致失败问题。具体可参造4.5小节内容。
可以看到文件夹上有勾选标号提示,这是ToriseGit的功能,Windows下平台可以更加便捷直观地查看git库文件,在裁剪SDK时有较大帮助,建议安装。当然,不安装也不影响后续操作。
可以看到根目录下存在
setup.py文件,而实际上cerbero编译工具使用前并不需要安装,只需要直接运行
cerbero-uninstalled脚本及选项(可选)即可。
2.2.1 cerbero-uninstalled常用选项
编译之前,先简单了解下cerbero-uninstalled的常用选项:
./cerbero-uninstalled --help
其输出内容为:
usage: cerbero-uninstalled [-h] [-c CONFIG] {add-recipe,rdeps,tag,genxcconfig,genlibfiles,check,list-packages,show-config,add-package,build,genvsprops,shell,run,cleanone,packageinfo,bundle-source,buildone,wipe,debug-packages,package,bootstrap,list,checkpackage,deps,gensdkshell,fetch-package,fetch} ... Build and package a set of modules to distribute them in a SDK positional arguments: {add-recipe,rdeps,tag,genxcconfig,genlibfiles,check,list-packages,show-config,add-package,build,genvsprops,shell,run,cleanone,packageinfo,bundle-source,buildone,wipe,debug-packages,package,bootstrap,list,checkpackage,deps,gensdkshell,fetch-package,fetch} sub-command help add-recipe Adds a new recipe rdeps List the reverse dependencies of a recipe tag Tag a git recipe or all git recipes using their sdk-$version branch genxcconfig Generate XCode config files to use the SDK from VS genlibfiles Generate MSVC compatible library files (.lib) check Run checks on a given recipe list-packages List all the available packages show-config Show configuration settings add-package Adds a new package build Build a recipe genvsprops Generate Visual Studio property sheets to use the SDK from VS shell Starts a shell with the build environment run Runs a command in the cerbero shell cleanone Clean a single recipe without its dependencies packageinfo Print information about this package bundle-source Bundle Source code of recipes and Cerbero buildone Build or rebuild a single recipe without its dependencies wipe Wipes everything to restore the build system debug-packages Outputs debug information about package, like duplicates files or files that do not belong to any package package Creates a distribution package bootstrap Bootstrap the build system installing all the dependencies list List all the available recipes checkpackage Run checks on a given package deps List the dependencies of a recipe gensdkshell Create a script with the shell environment for the SDK fetch-package Fetch the recipes sources from a package fetch Fetch the recipes sources optional arguments: -h, --help show this help message and exit -c CONFIG, --config CONFIG Configuration file used for the build
上面列出的命令实际上都定义于
./cerbero/commands/路径下,以相应名称的python脚本文件形式存在,如:
虽然
cerbero-uninstalled支持很多命令,但编译相关的并不多,这里仅介绍如下常用选项:
[-c CONFIG]
cerbero-unistalled编译时,如未使用该选项,则cerbero-unistalled使用默认配置(等价于变量)进行编译;如指定cbc文件,则使用指定配置完成编译。
可选择的CONFIG文件位于/config路径下,如下图所示:
list
列出所有可选的recipes;recipe用于指定某个模块的源、依赖项、编译步骤、产出库(动态、静态)等编译过程相关信息。
可选择的recipe文件位于/recipes目录下,由于数量较多,截取部分如下图所示:
list-packages
列出所有可打包的packages;打包实质上是将编译过程中各模块相关文件(头文件、库等),按照对应的package文件内容取出至指定路径,压缩并打包为对应平台文件。
可选择的package文件位于/packages路径下,如下图所示:
bootstrap
下载并安装当前环境下编译时所需工具
build
编译某个recipe,包括其依赖项
buildone
编译某个recipe,不包括其依赖项
cleanone
清理某个recipe
package
打包某个package,递归遍历所有依赖项。
wipe
清理之前build过程中产生的所有文件,慎用
2.2.2 cerbero-uninstalled基础编译
本节内容阅读默认前面章节所述环境均已安装配置完善,继续阅读前,请确认均已完备。选择只简单指定
.cbc文件,而不修改配置文件(package、recipe、commands等)直接编译,可能存在如下问题:
模块依赖项多,打包操作内部遍历后整体所需编译模块较多,造成编译耗时长(虚拟机测试2天左右)
部分特定模块打包时并未勾选,造成安装编译后SDK无法提供相应环境支持
如可接受上述问题,则可按照如下步骤进行基础编译:
./cerbero-uninstalled -c config/xxx.cbc bootstrap ./cerbero-uninstalled -c config/xxx.cbc package gstreamer-1.0
编译成功后,将生成对应平台文件,如windows中
msi,linux下
tar.bz2文件等。
Note:
编译过程中如出现错误,可先跳转至章节 “4. 问题-解决方法汇总”查看是否已有记录。
3. Cerbero配置
Cerbero内部使用了典型的oven-cookbook-recipe结构,结合其他功能命令、config等模块构建整个编译系统。Projects通过recipes文件(.recipe)来定义,文件中描述了需要编译的项目信息,如name, version, license, sources和编译方法。同时,还提供了一些用于后续打包的文件。
Packages通过packages文件(.package)来定义,文件中描述了包信息,如name, version, license, maintainer和其他用于打包的内容。一个包内部包含了一系列recipes,安装时将进行展开。
3.1 定制编译步骤
如前所述,projects通过recipe文件来定义,build过程中会根据recipe内容进行编译。编译步骤实际上分为六步,分别为:Fetch
Extract
Configure
Compile
Install
Post_install
第一次编译时,必须Fetch相关源以进行后续步骤,但通常在编译成功后,我们将不再希望所有模块每次编译时都自动更新为最新版本(稳定性不可控),此时可以将Fetch步骤去除,之后的build便会基于已有的源包进行编译。
./cerbero/build/recipe.py
3.2 指定模块编译版本
编译时,可能会出现某个模块的最新或特定版本存在bug,此时可通过指定模块编译版本来解决。3.2.1 SourceType.GIT
以libffi为例, 修改下图中标示处:其中commit等可从已clone下来的git版本库中获取,需为对应版本commit id。修改完成后,确认是否有其他相关内容需一并修改,此处需自行调整。
clean后重新build,测试通过。
3.2.2 SourceType.TARBALL
此处以faad2为例,修改下图中标示处:修改version、url地址,url地址需访问链接进行手动确认,方法通常为去除末端版本字段,如
faad2-2.7.tar.bz后访问。其他获取方法请自行研究。
3.2.3 SourceType.SVN
此处以Tremor为例,修改如下图标示处:3.3 GStreamer SDK 裁剪
./cerbero-unistalled -c config/xxx.cbc package gstreamer-1.0
键入该命令行,可开始
gstreamer-1.0 SDK的
package动作。
SDK实质上是package所有recipe build后相关文件的产物,对应编译中参与的角色(总package、子package、模块),裁剪也分为如下三种:
3.3.1 总package裁剪-.package
gstreamer-1.0 的package文件位于路径./packages/gstreamer-1.0/下。
首先整体浏览下该package文件内容:
# -*- Mode: Python -*- vi:si:et:sw=4:sts=4:ts=4:syntax=python class SDKPackage(package.SDKPackage): name = "gstreamer-1.0" shortdesc = "GStreamer 1.0" longdesc = "GStreamer 1.0" title = "GStreamer 1.0" url = "http://gstreamer.freedesktop.org" version = '1.9.0.1' sdk_version = '1.0' codename = 'Congo' license = License.LGPL uuid = 'b1b4b712-0d09-4a34-8117-8a69b6deecc2' vendor = "GStreamer Project" org = "org.freedesktop.gstreamer" ignore_package_prefix = True packages =[ # (name, required, selected) ('gstreamer-1.0-core', True, True), #('gstreamer-1.0-system', False, True), #('gstreamer-1.0-playback', False, True), ('gstreamer-1.0-codecs', False, True), ('gstreamer-1.0-effects', False, True), #('gstreamer-1.0-net', False, True), #('gstreamer-1.0-visualizers', False, True), #('gstreamer-1.0-codecs-gpl', False, False), ('gstreamer-1.0-codecs-restricted', False, True), #('gstreamer-1.0-net-restricted', False, False), #('gstreamer-1.0-dvd', False, False), #('gstreamer-1.0-libav', False, False), #('gstreamer-1.0-encoding', False, False), ('gstreamer-1.0-capture', False, False), #('gstreamer-1.0-editing', False, False), ('gstreamer-1.0-devtools', False, False), ] platform_packages = { Platform.WINDOWS: [ ('vsintegration-1.0', True, False), ('gstreamer-1.0-vs-templates', True, False), ], } install_dir = { Platform.WINDOWS: 'gstreamer', Platform.LINUX: '/opt/gstreamer-1.0/', Platform.DARWIN: '/Library/Frameworks/GStreamer.framework/', Platform.IOS: '/Library/Developer/GStreamer/iPhone.sdk' } root_env_var = 'GSTREAMER_1_0_ROOT_%(arch)s' wix_upgrade_code = { PackageType.DEVEL: { Architecture.X86 : 'c0c6126d-1f4a-4577-9598-e900f594fd06', Architecture.X86_64: '49c4a3aa-249f-453c-b82e-ecd05fac0693', }, PackageType.RUNTIME: { Architecture.X86 : 'ebe0c791-d84e-4f7e-a4eb-18012a0e319d', Architecture.X86_64: 'c20a66dc-b249-4e6d-a68a-d0f836b2b3cf', }, } osx_framework_library = ('GStreamer', 'lib/GStreamer') ios_framework_library = ('GStreamer', 'lib/GStreamer') def prepare(self): if self.config.target_platform in [Platform.ANDROID, Platform.IOS]: p = ['gstreamer-1.0-dvd'] self.packages = [ x for x in self.packages if x[0] not in p] if self.config.target_platform == Platform.IOS: self.resources_postinstall = 'post_install_ios' #self.user_resources = ['share/gst-sdk/tutorials/xcode iOS']
从面的代码中可以看出,裁剪过程中,只需要关注gstreamer-1.0.package文件的如下字段:
packages
platform_packages
对于不需要的子package可以直接使用
#注释掉以裁剪。至于如何确认是否需要,就要打开各
子package甚至更底层的
模块recipe文件进行确认。
以
gstreamer-1.0-codecs.package为例,如下图所示:
实际上,
子package文件中也只是在deps、files、files_devel、platform_files这些字段中粗略列出相关模块和库,如需最终确认是否存在依赖或裁剪的空间,需进一步打开所引入的模块recipe文件。
以
gst-plugins-good-1.0为例,
子package
gstreamer-1.0-codecs.package中使用了其
:plugins_codecs和
:plugins_codecs_devel两项内容,因此我们只关注gst-plugins-good-1.0.recipe文件中的这两部分。
:plugins_codecs_devel字段不存在
此时可以清晰地看到,
子package中引入模块字段处其实是包含了模块中对应字段所有lib。如无需将这些lib打包到SDK中,则可在
子package中移除对该字段的引入。
3.3.2 子package裁剪-.package
上节的裁剪是总package级别的,简单却也也粗暴,只能以package为单位进行裁剪,控制精度很低。实际上,为提高精度,可以对子package做进一步的裁剪。
以
gstreamer-1.0-codecs.package为例,可做如下裁剪(具体裁剪内容根据需求决定):
3.3.3 模块裁剪-.recipe
上节的子package裁剪虽然已经比
总package级别裁剪精密很多,但某些时候,我们可能只需要在最终SDK中包含某
子package所引入
模块字段中的一个lib,其他lib都可以去除,此时就需要进行
模块级别的裁剪。
以
gst-plugins-good-1.0.recipe为例,可做如下裁剪示例(其他字段可参照进行):
4. 问题-解决方法汇总
4.1 Git信息未配置
解决办法为根据提示配置信息:
git config --global user.email "xxxx@xxx.com"git config --global user.name "xxxx"
4.2 Download certificate 验证
将参数
check_cert=True修改为
check_cert=False以关闭验证。
4.3 Console Unicode
The most secure solution is this one: Go to your Registry key HKEY_CURRENT_USER\Software\Microsoft\Command Processor and add String value Autorun = chcp 65001.
4.4 GPLed program for Windows NT/…
msgfmt是gettext中的一部分,使用gettext0.19.5中发现该系列程序运行会出错,而在gettext0.18.2中并未出现该问题。目前采用的方法是恢复使用0.18.2系列msgfmt程序替代。
Download
4.5 webrtc-audio-processing compile error
查找到根本问题为make过程中对应.o文件拼接后路径过长
需cebero文件夹内容直接放置在home/usrxx/目录下以减少完整路径长度。
4.6Ubuntu Android SDK libmad缺失
解决方法为去除对libmad项的依赖,需修改文件有:./recipes/gst-plugins-ugly-1.0.recipe
./recipes/gst-plugins-ugly-1.0-static.recipe
./packages/gstreamer-1.0-codec-restricted.package
相关文章推荐
- gstreamer安装经验
- GStreamer移植
- Ubuntu下构建gstreamer开发环境
- GStreamer MP3
- Gstreamer中一些gst-launch常用命令
- Gstreamer框架中使用gst-launch进行流媒体播放
- Gstreamer 小便签
- gstreamer 学习笔记 -- 音视频播放
- Gstreamer的一些基本概念与A/V同步分析
- Gstreamer多路流同步
- Gstreamer的音视频同步
- Centos7 解决totem不能播放的问题
- GStreamer 1.0 运行时环境变量设置
- GStreamer Related webpage
- imx53qsb linux-2.6.35.3 gstreamer 播放ts流媒体
- Gstreamer rtspsrc 停止不发送teardown 命令
- Gstreamer Basic tutorial 1: Hello world!
- WARNING: erroneous pipeline: no element "ffdec_h264"解决方案
- 基于Gstreamer的TI DSP视频处理框架
- DM3730 Gstreamer视频采集 传输命令