您的位置:首页 > 其它

Windows下编译、移植、使用ffmpeg(移植篇)

2016-10-27 14:06 357 查看
Windows下编译、移植、使用ffmpeg(移植篇)

创建一个新的Android工程VideoPlayer
在工程根目录下创建jni文件夹
在jni下创建prebuilt目录,然后:把libswscale-4.so,libavformat-57.so,libavutil-55.so,libswresample-2.so,libavcodec-57.so 5个so文件放入到该目录下; 将ffmpeg3.0.1\android\arm\include目录下的所有头文件放到该目录下。
创建VideoPlayer.class其中内容为

public class VideoPlayer {
static {
System.loadLibrary("VideoPlayer");
}

public static native int play(Object surface,String string);
}

5、右键VideoPlayer ->externtools ->javah生成头文件文件内容为
 
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class jonesx_videoplayer_VideoPlayer */

#ifndef _Included_jonesx_videoplayer_VideoPlayer
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class:     jonesx_videoplayer_VideoPlayer
* Method:    play
* Signature: (Ljava/lang/Object;Ljava/lang/String;)I
*/
JNIEXPORT jint JNICALL Java_jonesx_videoplayer_VideoPlayer_play
(JNIEnv *, jclass, jobject, jstring);

#ifdef __cplusplus
}
#endif
#endif

6、编写Android.mk文件内容为

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)
LOCAL_MODULE := avcodec
LOCAL_SRC_FILES := prebuilt/libavcodec-57.so
include $(PREBUILT_SHARED_LIBRARY)

include $(CLEAR_VARS)
LOCAL_MODULE := avformat
LOCAL_SRC_FILES := prebuilt/libavformat-57.so
include $(PREBUILT_SHARED_LIBRARY)

include $(CLEAR_VARS)
LOCAL_MODULE := avutil
LOCAL_SRC_FILES := prebuilt/libavutil-55.so
include $(PREBUILT_SHARED_LIBRARY)

include $(CLEAR_VARS)
LOCAL_MODULE := swresample
LOCAL_SRC_FILES := prebuilt/libswresample-2.so
include $(PREBUILT_SHARED_LIBRARY)

include $(CLEAR_VARS)
LOCAL_MODULE := swscale
LOCAL_SRC_FILES := prebuilt/libswscale-4.so
include $(PREBUILT_SHARED_LIBRARY)

include $(CLEAR_VARS)

LOCAL_SRC_FILES := VideoPlayer.c
LOCAL_LDLIBS += -llog -lz -landroid
LOCAL_MODULE := VideoPlayer
LOCAL_C_INCLUDES += $(LOCAL_PATH)/include

LOCAL_SHARED_LIBRARIES:= avcodec avformat avutil swresample swscale

include $(BUILD_SHARED_LIBRARY)

7、编写Application.mk文件,内容
APP_ABI := armeabi
APP_PLATFORM := android-9

8、打开AndroidStudio terminal界面 进入项目根目录 jni输入ndk-build生成libs\armebabi目录9、截止上面这几步,一般都完成了移植,但是我这里ndk-build找不到VideoPlayer.o文件,于是我在build->intermediates目录下找到obj文件夹,里面就是我编译完成的文件,最后附上移植完成的项目结构图


log.h文件是类似Android 的Log,VideoPlayer.c是视频的具体实现类。

10、参考文章 http://blog.csdn.net/gobitan/article/details/22750719http://blog.csdn.net/glouds/article/details/50937266 下一篇Windows下编译、移植、使用ffmpeg(使用篇)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: