EpMediaCreator 新的图片合成视频库

因为项目需要将图片合成视频并添加水印,滤镜和背景音乐的功能,在Github上面找到一个开源项目EpMedia是满符合要求的。EpMedia是基于FFmpeg,而图片合成视频的预览播放能力是使用ijkplayer,因此就将两者结合,生成了一个新的EpMedia库,将其命名为EpMediaCreator

EpMedia Github地址
https://github.com/yangjie10930/EpMedia

Android上基于FFmpeg开发的视频处理框架,简单易用,体积小,帮助使用者快速实现视频处理功能。包含以下功能:剪辑,裁剪,旋转,镜像,合并,分离,变速,添加LOGO,添加滤镜,添加背景音乐,加速减速视频,倒放音视频。

本项目所使用的EpMedia在开源项目EpMedia的基础上,依赖ijkplayer而形成。因此在编译本库时,先确保已经生成了ijkplayer的相关库。

项目目录

首先,修改Android.mk,

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)
LOCAL_MODULE :=  libijkffmpeg
LOCAL_SRC_FILES := prebuilt/libijkffmpeg.so
include $(PREBUILT_SHARED_LIBRARY)

include $(CLEAR_VARS)
LOCAL_MODULE :=  libijkplayer
LOCAL_SRC_FILES := prebuilt/libijkplayer.so
include $(PREBUILT_SHARED_LIBRARY)

include $(CLEAR_VARS)
LOCAL_MODULE :=  libijksdl
LOCAL_SRC_FILES := prebuilt/libijksdl.so
include $(PREBUILT_SHARED_LIBRARY)


include $(CLEAR_VARS)

LOCAL_ARM_MODE := arm
LOCAL_MODULE := ffmpeg_jni


LOCAL_SRC_FILES := Jni_FFmpegCmd.c\
                                      cmdutils.c \
                                      ffmpeg.c \
                                      ffmpeg_opt.c \
                                      ffmpeg_filter.c \
                                      ffmpeg_thread.c

LOCAL_C_INCLUDES := $(ANDROID_NDK)/platforms/android-21/arch-arm/usr/include \
                    /Users/littlebyte/svn/trunk_CloudCommonLib/EpMediaCreator/src/main/jni/include \
                    /Users/littlebyte/develop/ijkplayer-android/extra/ffmpeg
LOCAL_LDLIBS := -llog -ljnigraphics -lz -landroid -lm -pthread -L$(SYSROOT)/usr/lib -latomic
LOCAL_SHARED_LIBRARIES := libijkffmpeg libijkplayer libijcdksdl
LOCAL_CFLAGS := -D__STDC_CONSTANT_MACROS -Wno-sign-compare -Wno-switch -Wno-pointer-sign -DHAVE_NEON=1 -fPIC -DANDROID

include $(BUILD_SHARED_LIBRARY)

其中,LOCAL_C_INCLUDES需要修改为自己的电脑的目录,分别是ANDROID_NDK下的include目录,EpMediaCreator jni下的include目录,以及本机的ffmpeg源码目录。

下面是EpMediaCreator的so库生成脚本。

# epmedia so 生成脚本
# ps. EpMediaCreator模块只作为so库生成,不实际参与编译使用,也不打包到apk
#(!!!使用时请修改为本机的ijkplayer源码路径)
IJKPLAYER_HOME=/Users/littlebyte/develop/ijkplayer-android
PROJECT_ROOT=$PWD

#ijkplayer编译完成后,在对应cpu目录下(如:ijkplayer-armv7a)生成so库

cd $PROJECT_ROOT/src/main/

rm jni/prebuilt/*

#将ijkplayer的so库复制到prebuilt目录下
cp $IJKPLAYER_HOME/android/ijkplayer/ijkplayer-armv7a/src/main/libs/armeabi-v7a/*.so  jni/prebuilt

#移除之前生成的so库
rm -r obj
rm libs/armeabi-v7a/*

cd jni
ndk-build

echo "make success!!"

然后进入生成脚本所在目录,运行脚本,如果一切顺利则可以生成下图的libffmpeg_jni.so库,就可以使用它替代Epmedia里面的原本的libffmpeg_jni.so库了。
ps. ijkplayer的编译配置见上一篇文章:ijkplayer 编译备忘,支持x264和https。

编译结果

你可能感兴趣的:(EpMediaCreator 新的图片合成视频库)