下载SDK及Demo包

SDK包 prebuilt binaries:https://gstreamer.freedesktop.org/data/pkg/android/
Demo 代码:https://gitlab.freedesktop.org/gstreamer/gst-docs/
解压,分别存放至路径:
D:\GitHub\extra\gst-docs-master
D:\GitHub\extra\gstreamer-1.0-android-universal-1.15.1

构建Demo应用并运行

开发工具相关版本信息如下
Android平台下GStreamer SDK使用实践

打开demo路径下的工程
Android平台下GStreamer SDK使用实践
在AS同步project之后,进行构建。
这里有个GStreamer SDK路径配置问题,需要在ndk-build的构建脚本中引入GSTREAMER_ROOT_ANDROID的值,这个值就是我们存放GStreamer SDK的路径。
Android平台下GStreamer SDK使用实践
有两种方式可以指定:

  1. 新建系统环境变量GSTREAMER_ROOT_ANDROID并设置其值。
  2. 按照ERROR提示,在gradle.properties中增加gstAndroidRoot变量。

这里我们使用方法2。由于Demo程序project中没有自带gradle.properties配置文件。我在project根路径下新建该配置文件并写入配置。
Android平台下GStreamer SDK使用实践
上述问题解决,继续构建,在ndk-build阶段遇到新问题:
Android平台下GStreamer SDK使用实践
找到GStreamer SDK路径下出现问题的构建脚本gstreamer-1.0.mk,路径为:
D:\GitHub\extra\gstreamer-1.0-android-universal-1.15.1\armv7\share\gst-android\ndk-build\gstreamer-1.0.mk
Android平台下GStreamer SDK使用实践
可以看到对应说明,新版Android NDK使用新的SYSROOT_INC和SYSROOT_LINK替换了以前的SYSROOT变量。然而,在新版NDK中SYSROOT_LINK定义任然是缺失的。查看一下SYSROOT_GST_LNIK的使用方式,是作为libtool-link调用的–sysroot参数使用,用于指定交叉编译环境下的系统根路径。所以,这里可以暂且使用SYSROOT_INC代替,修改如下:
Android平台下GStreamer SDK使用实践
这里需要注意一下,GStreamer SDK中ABI分为4个,在AS中进行ndk-build时,默认也是会构建这4个类型的ABI,所以4个对应的gstreamer-1.0.mk文件都需要进行修改。如果只需要构建指定的ABI,可以通过ndk-build的abiFilters参数进行配置,如下:
Android平台下GStreamer SDK使用实践
继续构建,即可成功完成。
在手机上运行Demo程序,效果图如下:
Android平台下GStreamer SDK使用实践

AS运行使用ndk-build构建出现问题时排查方法:

AS中打开Project结构视图,查看.externalNativeBuild中的相关文件可以获取到ndk-build的相关信息:
Android平台下GStreamer SDK使用实践
android_gradle_build.json 文件记录了ndk-build相关的所以信息,包含使用的构建脚本,需要构建的源文件,生成哪些库,ABI,交叉编译工具链等。
ndkBuild_build_command.txt 文件记录着AS要执行的ndk-build命令,记录执行ndk-build脚本时的完整参数列表,我们也可以在命令行手动执行这个命令来验证一些问题。
ndkBuild_build_output.txt 文件记录了ndk-build执行后的输出信息。

相关文章:

  • 2021-07-02
  • 2022-03-01
  • 2022-12-23
  • 2021-08-12
  • 2022-12-23
  • 2021-07-20
  • 2021-09-25
  • 2021-08-14
猜你喜欢
  • 2021-12-04
  • 2021-12-28
  • 2021-09-20
  • 2021-10-31
  • 2021-11-25
  • 2021-12-15
  • 2021-05-02
相关资源
相似解决方案