Android集成FFmpeg库录音

Android下对音频处理有限局限,这时可以利用FFmpeg进行编解码!那如何集成FFmpeg呢?

1、下载FFmpeg源码 https://ffmpeg.org/download.html 

git clone https://git.ffmpeg.org/ffmpeg.git ffmpeg

2、配置FFmpeg选项,进行裁剪

3、通过NDK编译配置后的FFmpeg源码,生成 *.so库

4、编写Android JNI调用


思路应该是这样的,那开始啦!编译环境我用的是在Mac或Linux下

下载完之后,对应的文件目录结构下会有一个 configuure 文件,是一个shell文件。Android里引用*.so库不支持,后缀版本号,所以配置全需要修改 configure。打开configure文件找到

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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值