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

时间:2018-08-28 10:54:55

标签: android c++ cmake android-ndk android-gradle

我有一个android项目,当前使用 Cmake 包含所有.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. 的默认设置
  4. 我还需要包括使用cmake的googlevr ndk库。

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

  1. 每个模块都可以具有ether cmake或ndk-build支持。因此, 我可能可以使用ndk-build添加一个新模块,并在其中包含gstreamer(但是gstreamer仅在此模块中可用)
  2. 使用android studio中的cmake编译适用于Android的gstreamer-但我看不到以前的证据,或者对于不了解cmake的人来说是可能的。

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

2 个答案:

答案 0 :(得分:1)

即使您已经离开 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 预建二进制文件文件夹如下

    enter code here

经过上述更改,我可以使用 CMake 使用 GStreamer 成功构建 APK

答案 1 :(得分:0)

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

Tutorial on Medium

Github project