下载完之后,对应的文件目录结构下会有一个 configuure 文件,是一个shell文件。Android里引用*.so库不支持,后缀版本号,所以配置全需要修改 configure。打开configure文件找到Android下对音频处理有限局限,这时可以利用FFmpeg进行编解码!那如何集成FFmpeg呢?
1、下载FFmpeg源码 https://ffmpeg.org/download.html
git clone https://git.ffmpeg.org/ffmpeg.git ffmpeg2、配置FFmpeg选项,进行裁剪
3、通过NDK编译配置后的FFmpeg源码,生成 *.so库
4、编写Android JNI调用
思路应该是这样的,那开始啦!编译环境我用的是在Mac或Linux下
修改成SLIBNAME_WITH_VERSION='$(SLIBNAME).$(LIBVERSION)' SLIBNAME_WITH_MAJOR='$(SLIBNAME).$(LIBMAJOR)' LIB_INSTALL_EXTRA_CMD='$$(RANLIB) "$(LIBDIR)/$(LIBNAME)"' SLIB_INSTALL_NAME='$(SLIBNAME_WITH_VERSION)' SLIB_INSTALL_LINKS='$(SLIBNAME_WITH_MAJOR) $(SLIBNAME)'
SLIBNAME_WITH_VERSION='$(SLIBNAME).$(LIBVERSION)' # SLIBNAME_WITH_MAJOR='$(SLIBNAME).$(LIBMAJOR)' SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)' LIB_INSTALL_EXTRA_CMD='$$(RANLIB) "$(LIBDIR)/$(LIBNAME)"' # SLIB_INSTALL_NAME='$(SLIBNAME_WITH_VERSION)' SLIB_INSTALL_NAME='$(SLIBNAME_WITH_MAJOR)' # SLIB_INSTALL_LINKS='$(SLIBNAME_WITH_MAJOR) $(SLIBNAME)' SLIB_INSTALL_LINKS='$(SLIBNAME)'
通常不知道如何配置选项,可以先用运行 configure 的help,查看帮助。
可以看到有一堆帮忙。
但这些都是利用当前平台下编译的,不适应Android平台,没有关系FFmpeg提供了交叉编译。
然后新建一个 build_ffmpeg_android.sh
NDK=${User/ndk_path} //修改成自己的NDK路径 SYSROOT=$NDK/platforms/android-9/arch-arm/ TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/darwin-x86_64 PREFIX=$HOME/Documents/ffmpeg_build_android //设置编译后的*.so路径 ffmpeg_path=$HOME/Documents/FFmpeg build_ffmpeg() { cd ${ffmpeg_path} ./configure\ --prefix=${PREFIX}\ --pkg-config-flags="--static" \ --extra-cflags="-I${PREFIX}/include" \ --extra-ldflags="-L${PREFIX}/lib" \ --enable-gpl \ --disable-static \ --enable-shared \ --enable-debug=3 \ --disable-optimizations \ --disable-asm \ --disable-stripping \ --disable-ffserver \ --disable-ffplay \ --disable-yasm\ --enable-filter=aformat \ --enable-filter=adelay \ --enable-filter=apad \ --enable-filter=asplit \ --enable-filter=amix \ --enable-filter=volume \ --enable-filter=aresample \ --enable-filter=atrim \ --enable-filter=afade \ --enable-filter=concat \ make clean make -j8 make install # make distclean } build_ffmpeg # --enable-debug 就是gcc 中添加-g选项, 3是-g的级别 #--disable-optimizations 不去优化 #--disable-stripping 是因为make install 会执行strip命令,strip命令就会去掉FFmpeg的symbols(符号表),避免strip命令将先前的配置给去掉 #--disable-asm 去掉汇编的东西
保存,然后执行build_ffmpeg_android.sh,等待生成*.so
会生成 指定的目录下一堆文件,
include和lib是主要的,lib 文件夹中会有*.so
现在就是Android啦
有完整的工程,在github上,可以clone运行 FFmpegAudioMix