簡體   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