美文网首页
EpMediaCreator 新的图片合成视频库

EpMediaCreator 新的图片合成视频库

作者: 大斜丸 | 来源:发表于2018-06-13 11:30 被阅读48次

    因为项目需要将图片合成视频并添加水印,滤镜和背景音乐的功能,在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 新的图片合成视频库

          本文链接:https://www.haomeiwen.com/subject/knqjeftx.html