我正在尝试从官方网站运行gstreamer的android教程。第一个教程工作正常,因为它没有使用任何插件。但我无法使其余的工作。在第二个教程中,问题是找不到插件之一:autoaudiosink
Android Studio打开一个文件" /home/borlea/Android/Sdk/ndk-bundle/toolchains/aarch64-linux-android-4.9/prebuilt/linux-x86_64/aarch64-linux-android/bin/ld.gold 34;但它没有任何可理解的东西,我得到了这些错误:
错误:错误:找不到-lgstautoaudiosink
错误:错误:未定义引用' gst_plugin_autoaudiosink_register'
错误:错误:链接器命令失败,退出代码为1(使用-v查看调用)
这是我的Android.mk文件
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := tutorial-2
LOCAL_SRC_FILES := tutorial-2.c
LOCAL_SHARED_LIBRARIES := gstreamer_android
LOCAL_LDLIBS := -llog
include $(BUILD_SHARED_LIBRARY)
GSTREAMER_ROOT_ANDROID := /home/borlea/Downloads/gstreamer-1.0-android-universal-1.12.3
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 := audiotestsrc audioconvert audioresample autoaudiosink
include $(GSTREAMER_NDK_BUILD_PATH)/gstreamer-1.0.mk
我做错了什么?
构建错误的打印屏幕:
提前致谢。
答案 0 :(得分:1)
我在尝试教程时遇到了同样的错误,如果我没记错的话,问题是Android Studio和Android.mk之间的链接。要解决它,你必须:
1.右键单击左侧导航选项卡中的“app”
2.单击“使用Gradle链接C ++项目”
3.在新窗口中:
- 将“构建系统”从“CMake”更改为“ndk-build”
- 单击“...”并浏览到Android.mk的位置“/ AndroidStudioProjects/android-studio-5/app/src/jni/Android.mk”
- 点击OK
希望这将解决错误,但会出现另一个错误。这个教程的主要问题是它是为eclipse而制作的。因此,在对NDK,makefile.mk GStreamer和Android Studio如何工作的一些研究之后,我最终逐步介绍了如何在Android Studio上运行所有这些教程。
我给出的回答的链接是:Gstreamer examples in Android Studio
在那里你会找到图片(这是本教程的第二步)。