所以我想做的是:
使用C ++为NDK构建渲染插件(传递位图+ textureID并在纹理上渲染位图)。这很好。
将渲染插件添加到使用ffmpeg解码视频的C(for NDK)项目中,视频的每一帧都会传递到渲染插件进行显示。
我可以将渲染插件构建到C项目中,并将相关文件移动到Obj/local/
或libs/
目录(我已尝试过静态和共享构建渲染器)。但是,我无法将其包含在实际的C代码中。
目录如下所示:
当我尝试在代码中添加#include <renderplugin.h>
时,它不会链接,说file or directory could not be found
Android.mk
文件夹中的jni
:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := NativeMediaPlayer
LOCAL_SRC_FILES := NativeMediaPlayer.c
LOCAL_LDLIBS := -llog -lz -lGLESv2
LOCAL_SHARED_LIBRARIES := libavformat libavcodec libavutil liblog libswscale NativeRenderPlugin
include $(BUILD_SHARED_LIBRARY)
#ffmpeg
$(call import-add-path, ../)
$(call import-module, NativeMediaPlayer/external)
#render plugin
$(call import-add-path, jni)
$(call import-module, prebuilt)
插件所在的Android.mk
文件夹中的prebuilt
:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := libNativeRenderPlugin
LOCAL_SRC_FILES := $(TARGET_ARCH_ABI)/lib/libNativeRenderPlugin.so
LOCAL_EXPORT_C_INCLUDES += $(TARGET_ARCH_ABI)/include
include $(PREBUILT_SHARED_LIBRARY)
答案 0 :(得分:0)
它似乎与放置库的位置有关,在将它们移动到与ffmpeg库相同的文件夹(并更新makefile)之后,包现在正在正常工作。