【问题标题】:GStreamer Android.mk to CMakeList.txtGStreamer Android.mk 到 CMakeList.txt
【发布时间】:2021-04-14 16:53:38
【问题描述】:

附上的代码是来自 GStreamer 官方网站的 Android.mk 文件,由 NDKBuild 构建。我目前完成了我的应用程序所需的所有功能,然后我才意识到现有的应用程序(我将从我开发的应用程序中实现该功能)是由 CMake 构建的,我在翻译 GStreamer 构建时遇到了困难文件从 Android.mk 到 CMakeList.txt。我知道这不是一个编码服务平台,但这是我项目的最后一步,我真的需要你的帮助。

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE    := tutorial-3
LOCAL_SRC_FILES := tutorial-3.c dummy.cpp
LOCAL_SHARED_LIBRARIES := gstreamer_android
LOCAL_LDLIBS := -llog -landroid
include $(BUILD_SHARED_LIBRARY)

ifndef GSTREAMER_ROOT_ANDROID
$(error GSTREAMER_ROOT_ANDROID is not defined!)
endif

ifeq ($(TARGET_ARCH_ABI),armeabi)
GSTREAMER_ROOT        := $(GSTREAMER_ROOT_ANDROID)/arm
else ifeq ($(TARGET_ARCH_ABI),armeabi-v7a)
GSTREAMER_ROOT        := $(GSTREAMER_ROOT_ANDROID)/armv7
else ifeq ($(TARGET_ARCH_ABI),arm64-v8a)
GSTREAMER_ROOT        := $(GSTREAMER_ROOT_ANDROID)/arm64
else ifeq ($(TARGET_ARCH_ABI),x86)
GSTREAMER_ROOT        := $(GSTREAMER_ROOT_ANDROID)/x86
else ifeq ($(TARGET_ARCH_ABI),x86_64)
GSTREAMER_ROOT        := $(GSTREAMER_ROOT_ANDROID)/x86_64
else
$(error Target arch ABI not supported: $(TARGET_ARCH_ABI))
endif

GSTREAMER_NDK_BUILD_PATH  := $(GSTREAMER_ROOT)/share/gst-android/ndk-build/
include $(GSTREAMER_NDK_BUILD_PATH)/plugins.mk
GSTREAMER_PLUGINS         := $(GSTREAMER_PLUGINS_CORE) $(GSTREAMER_PLUGINS_SYS) $(GSTREAMER_PLUGINS_EFFECTS) $(GSTREAMER_PLUGINS_CODECS_RESTRICTED) $(GSTREAMER_PLUGINS_PLAYBACK) $(GSTREAMER_PLUGINS_CODECS) $(GSTREAMER_PLUGINS_NET)
GSTREAMER_EXTRA_DEPS      := gstreamer-video-1.0 gobject-2.0
GSTREAMER_EXTRA_LIBS      := -liconv
include $(GSTREAMER_NDK_BUILD_PATH)/gstreamer-1.0.mk

【问题讨论】:

  • 请更清楚您的需求,我可能会提供帮助。还可以查看 Gstreamer IRC 频道 irc.lc/freenode/gstreamer,您可以获得很多帮助。
  • 我手头有 2 个不同的应用程序。一个现有的应用程序,我对 GStreamer for Android Official Page 的代码稍作修改。问题是,现有的应用程序 JNI 是用 CMake 构建的,但不是为 GStreamer 构建的,因为它是 NDKBuild。为了在现有应用程序中使用 GStreamer,我需要将 Android.mk 转换为 CMakeList.txt 中的部分内容,但我不知道该怎么做,甚至不知道它是否可行或是否可行。
  • Witch 平台是 CMake 代码,适用于 windows、linux 还是其他?
  • 另外,我认为 gstreamer cmake 构建系统不再是标准构建,而是使用某种类型的 python 构建。我在工作中的大多数平台上都构建了 gstreamer,所以也许我可以提供帮助。如果我正确理解了这个问题,您有一个为 android 构建的应用程序,现在您想为另一个平台构建它?
  • Android Studio 中的 CMake。不,我的意思是,我有和现有的 Android 应用程序,但我希望实现 GStreamer 从 Raspberry Pi 到 Android 表面视图的流式传输功能。因此,为了防止我使现有应用程序不再可用,我首先尝试在另一个新应用程序上构建必要的功能。好吧,现在一切正常,是时候将所有功能从新应用程序转移回现有应用程序了,但只有我意识到现有应用程序使用 CMake 而不是 ndkbuild,我无法更改现有应用程序上的任何内容因为它是一个发布版本。

标签: android cmake gstreamer


【解决方案1】:

如果我理解正确,您需要为另一个平台构建 gstreamer。您正在尝试使用 Cmake 执行此操作。这曾经是为 Windows 构建它的方式,但已被基于 meason 框架的构建所取代。你可以在这里阅读更多内容https://github.com/GStreamer/gst-build

好消息是,与使用 Cmake 相比,使用 meason 构建 gstreamer 非常简单。

希望这会有所帮助。

【讨论】:

  • 但问题是我正在尝试在 Android Studio 中构建它,所有 JNI 都是使用 CMake 构建的(那些 OpenCV 的东西......)。
  • 不幸的是,我对 Android Studio 并不熟悉。如果您想使用 cmake 构建,您需要确保所有必需的库都已到位。当我尝试它时,这至少花了我两个星期。但我没有在 android studio 中这样做,所以在那里可能会更难。我最好的建议可能是进入 IRC 频道并在那里查看。在那里闲逛的人通常会很快回答。
猜你喜欢
  • 2022-11-29
  • 2014-08-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-22
  • 2016-10-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多