繁体   English   中英

在使用 CMake (CMakeLists.txt) 而不是 ndk-build (Android.mk) 的 android ndk 项目中包含 GStreamer

[英]Include GStreamer in android ndk project that uses CMake (CMakeLists.txt) and not ndk-build (Android.mk)

我有一个 android 项目,目前使用Cmake来包含 all.cpp /.c 代码。 现在我想添加GStreamer 本机库,以便我可以在我的本机代码中使用它们。 但是 gstreamer 文档https://gstreamer.freedesktop.org/documentation/installing/for-android-development.html仅记录使用 ndk-build在 android 上使用 gstreamer。

现在我不想完全重构我的项目以使用 ndk-build 和 Android.mk 因为

  1. CMake 完成了它的工作,我从来没有遇到过问题

  2. 如此处所述,cmake 是 android ndk 的默认设置https://developer.android.com/studio/projects/add-native-code

  3. 我还需要包含使用 cmake 的 googlevr ndk 库。

所以我需要找出解决方法,因此需要您的帮助。 这是我想出的一些想法

  1. 每个模块都可以有 ether cmake 或 ndk-build 支持。 因此,我可能可以使用 ndk-build 添加一个新模块并在其中包含 gstreamer(但 gstreamer 仅在该模块中可用)
  2. 在 android studio 中使用 cmake 为 android 编译 gstreamer - 但我没有看到之前已经完成的证据,或者对于没有强大 cmake 知识的人来说是可能的。

还有其他想法/改进吗? 谢谢

即使您已经离开 GStreamer,但如果其他人遇到此问题,请查看以下 github 存储库

https://github.com/henkeldi/gstreamer-android

对于我自己,我必须进行两个修改

  1. 我修改了 GSTREAMER_ROOT 的定义以包含 ANDROID_ABI 所以它看起来像下面这样

    #GStreamer 设置(GSTREAMER_ROOT $ENV{GSTREAMER_ROOT_ANDROID}/${ANDROID_ABI})

  2. 我不得不根据 ANDROID_ABI 重命名 GStreamer 预构建二进制文件中的文件夹。 因此,我的 Gstreamer 预建二进制文件文件夹如下所示

    在此处输入代码

经过上述更改后,我能够使用 CMake 使用 GStreamer 成功构建 APK

在某些时候,我放弃了 gstreamer,现在改用 ffmpeg。 有一个很好的编译 ffmpeg 的教程,这使得在 android 项目中包含本机 ffmpeg 变得非常容易:

媒体教程

Github项目

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM