NDK 编译 RTMPDump

来源:互联网 发布:ps淘宝详情图制作教程 编辑:程序博客网 时间:2024/05/16 12:00

部分转自:http://blog.csdn.net/yukuilongqq/article/details/9467637

首先创建工程目录如下图



下载rtmpdump源码

git clone git://git.ffmpeg.org/rtmpdump


进入的 rtmpdump 项目下的 librtmp目录下,把所有的头文件与C文件复制到工程目录librtmp/src下

由于rtmpdump依赖于第三方库OpenSSL  和 zlib,我们从

https://github.com/aluvalasuman/OpenSSL1.0.1cForAndroid

下载openss源码放到 工程目录 librtmp/thrid_party/android/目录下

ndk 能很好的支持zlib库,所以zlib库就可以直接拿来用了

进入的工程目录 librtmp/build/android/ jni  下

创建一个Application.mk 和一个 Android.mk 文件

Application.mk 如下书写

APP_PROJECT_PATH := $(call my-dir)/../APP_MODULES := librtmpAPP_STL := stlport_staticopenssl-build-dir := $(APP_PROJECT_PATH)../../third_party/android/OpenSSL1.0.1cForAndroidlibrtmp-build-dir := $(APP_PROJECT_PATH)APP_BUILD_SCRIPT := $(APP_PROJECT_PATH)jni/Android.mkAPP_PLATFORM := android-14APP_ABI := armeabi-v7a x86#APP_ABI := armeabi-v7aAPP_CFLAGS := -DDISABLE_NEON
jni目录下的Android.mk 文件

include $(openssl-build-dir)/Android.mkinclude $(librtmp-build-dir)../../src/Android.mk
OpenSSL中的 Android.mk文件已经写好了,我们直接用就行了

进入 librtmp/src目录下 创建Android.mk文件

LOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)LOCAL_MODULE := librtmpLOCAL_C_INCLUDES += \        $(LOCAL_PATH)/ \        $(LOCAL_PATH)/../third_party/android/OpenSSL1.0.1cForAndroid \        $(LOCAL_PATH)/../third_party/android/OpenSSL1.0.1cForAndroid/includeLOCAL_SRC_FILES = \        amf.c \        hashswf.c \        log.c \        parseurl.c \        rtmp.cLOCAL_ARM_MODE := armLOCAL_LDLIBS := -lzLOCAL_SHARED_LIBRARIES := libcrypto libsslinclude $(BUILD_SHARED_LIBRARY)#include $(BUILD_STATIC_LIBRARY)
好了现在大功告成,回到librtmp/build/android目录下 执行ndk-build命令

ndk开始编译,过一会就编译完了,这时在librtmp/build/android 目录下又生成里两个文件夹 

libs 和 obj

libs里存放了 openssl 生成的   liblincrypto.so 和 liblinssl.so  

obj里存放了 rtmpdump 生成的librtmp.a

当然 要想生成动态的librtmp.so的话 在前面的Android.mk里指定生成动态库,这样的话librtmp.so也会生成在libs里


最后工程的整体目录为:





0 0