编译gstreamer for android

1.下载cerbero工程

编译gstreamer可不是件容易事,一个是gst依赖了太多其他库,再一个是gst本身就有很多插件,这些插件分散在不同的工程里,相对来说ffmpeg就显得简单易用了不少,奈何项目里要用到gst,那就只能搞咯,幸运的是,github上有个开源项目,专为gst的交叉编译量身打造的,那就是cerbero项目。它只做两件事情,一个是配置编译环境,另一个是编译打包gst全部的相关工程,先从github上把它下下来

git clone https://github.com/GStreamer/cerbero.git

2.切换版本

刚下下来的cerbero工程默认编译最新的gst版本,如果你的项目需要其他的gst版本,那么直接切换cerbero的版本即可。

在这里插入图片描述
在这里插入图片描述

查看一下gst已经切换到对应的分支

在这里插入图片描述

3.配置编译环境

config目录下有不同平台的配置文件,根据需要选择对应的配置文件,然后执行命令

./cerbero-uninstalled -c config/cross-android-armv7.cbc bootstrap

这个命令会自动下载编译gst所需的依赖库,但事情往往没有这么简单,命令执行过程中总会出现一些问题,幸运的是大部分都是下载出错的,需要按出错提示逐个解决就行了

在这里插入图片描述

像上面这种纯粹就是下载超时了,本人的做法是直接手动执行它的下载命令,并把timeout改成20,然后就能下载下来了,再从新执行bootsrap

4.编译gst

当编译环境安装好之后,就可以编译gst了,执行以下命令

./cerbero-uninstalled -c config/cross-android-armv7.cbc package gstreamer-1.0

命令同样会自动下载gst的源码,也同样会出现一些奇怪的错误,需要根据具体错误提示解决,然后重新执行打包命令

在这里插入图片描述

像上面的错误,cerbero用python3写的,而本人的python环境没有six这个模块,需要自己安装,这个问度娘就行

在这里插入图片描述

还有这种cheksum errro的,感觉是下载的源有问题,本人也是没办法,只能重试几次,然后居然就好了

在这里插入图片描述

然后还有git fetch error的,这种一般是git的缓存不够引起的,解决方法是cd到对应的下载目录,执行git config
http.postBuffer 524288000,把缓冲加大到500M,再不行就加大到1G,然后手动执行git fetch --all
顺利编译通过后,可以看到cerbero工程目录里生成了两个包

在这里插入图片描述

5.打包gstream_android.so

解压编译生成的tar包(不带runtime那个),把解压后的路径导出到环境变量

export GSTREAMER_ROOT_ANDROID=你的解压目录

下载NDK,在NDK目录下新建jni目录,然后在jni目录里新建Application.mk和Andriod.mk文件,Android.mk将决定so库包含哪些编解码器插件,这里就不给出来了,可以这篇文章:

在这里插入图片描述

在NDK目录下,执行./ndk-build,打包so,如无意外,可以发现so静静地躺在了libs目录中

在这里插入图片描述

Tips

cerbero每次编译都会下载新的代码,如果想要修改源码做一些diy怎么办,只要修改cerbero/build/recipe.py这个脚本

在这里插入图片描述

把fetch和extract注释掉,这样编译时就不会下载代码了(下载解压后的源码在cerbero/build/sources/目录里)

执行以下命令可以只编译某个模块

./cerbero-uninstalled -c config/cross-android-armv7.cbc buildone gst-plugins-bad-1.0
交叉编译GStreamer是为了将GStreamer库和应用程序移植到不同的硬件平台和操作系统上。交叉编译可以在开发环境中进行,而不是在目标环境中,这样可以提高开发效率和灵活性。 以下是一个简单的步骤概述,用于交叉编译GStreamer: 1. 获取交叉编译工具链:首先,需要获取适用于目标硬件平台的交叉编译工具链。这包括编译器、链接器和其他构建工具。这些工具链由硬件平台的开发者或供应商提供。 2. 配置环境变量:将交叉编译工具链的路径添加到环境变量中,以便在编译过程中能够正确地找到它们。可以使用export命令在终端中设置环境变量。 3. 获取GStreamer源代码:从官方网站或版本控制库中获取GStreamer源代码。确保获取与使用的GStreamer版本相对应的源代码。 4. 配置构建选项:在交叉编译过程中,需要指定目标平台和其他配置选项。通过运行configure命令,可以设置这些选项。例如,可以指定交叉编译工具链的前缀,以及目标操作系统和架构。 5. 运行编译命令:运行make命令,开始编译GStreamer编译过程可能需要一些时间,具体取决于计算机的性能和源代码的大小。 6. 安装编译结果:完成编译后,可以使用make install命令将结果安装到指定的目标路径。确保目标路径和权限适合目标平台的要求。 通过遵循以上步骤,即可在交叉编译环境中成功编译GStreamer库和应用程序。这样,您就可以在目标硬件平台上使用GStreamer来开发多媒体应用程序。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值