FFmpeg学习—android 利用ffmpeg 集成libfdk-aac 录制aac 音频文件

来源:互联网 发布:移动硬盘格式化后数据恢复 编辑:程序博客网 时间:2024/06/04 18:58

ffmpeg 自带aac 编码器但是 不支持  AV_SAMPLE_FMT_S16 的采样,所以本文采用libfdk-aac 进行aac的编码,其中libfdk-aac编译步凑参考:http://blog.csdn.net/xiaibiancheng/article/details/69676965,ffmpeg 编译步凑参考:http://blog.csdn.net/xiaibiancheng/article/details/69445097,将libfdk-aac 集成到ffmpeg 的编译文件如下:

#!/bin/bashNDK="/home/wh/android-ndk-r12b"SYSROOT=$NDK/platforms/android-9/arch-arm/TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64function build_one{./configure --prefix=$PREFIX \--disable-shared \--enable-static \--disable-debug \                --disable-doc \                --disable-ffplay \                --disable-ffprobe \                --disable-ffserver \                --disable-avdevice \                --disable-doc \                --disable-symver \                --disable-encoders  \                --disable-muxers \                --disable-demuxers \                --disable-parsers  \                --disable-bsfs \                --disable-protocols \                --disable-indevs \                --disable-outdevs \                --disable-filters \                --disable-decoders \--enable-small \                --enable-asm \--enable-nonfree \                --enable-neon \--enable-gpl \--enable-encoder=libfdk_aac \                --enable-decoder=libfdk_aac \                --enable-libfdk-aac \--enable-muxer=adts \--disable-encoder=libfaac \--enable-protocol=file \--cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \--target-os=android \--arch=arm \                --disable-libfaac \--enable-cross-compile \--sysroot=$SYSROOT \--extra-cflags="-Os -fpic $ADDI_CFLAGS -mfpu=neon" \--extra-ldflags="$ADDI_LDFLAGS" \                $ADDITIONAL_CONFIGURE_FLAGmake install}CPU=armPREFIX=$(pwd)/android/$CPUADDI_CFLAGS="-marm -I/home/wh/FFmpeg-n3.1.3/fdkacc/include/  -DANDROID"ADDI_LDFLAGS="-L/home/wh/FFmpeg-n3.1.3/fdkacc/lib/"CPU=armv5teOPTIMIZE_CFLAGS="-marm -march=$CPU"PREFIX=./android/$CPUADDITIONAL_CONFIGURE_FLAG="--disable-armv6 --disable-armv6t2 --disable-vfp --disable-neon"build_one#arm v7nCPU=armv7-aOPTIMIZE_CFLAGS="-marm -march=$CPU"PREFIX=./android/$CPUADDITIONAL_CONFIGURE_FLAG=--enable-neonbuild_one

将上述内容保存为以 .sh文件格式的文件放到ffmpeg 跟目录下  在终端执行  上述文件,将进行编译。

其中有几点说明如下:

--enable-encoder=libfdk_aac \  启用libfdk_aac编码器
--enable-decoder=libfdk_aac \  启用libfdk_aac解码器
--enable-libfdk-aac \ 注册libfdk-aac 解码器,不加这个是不会注册的,最终还是用的ffmpeg 默认的aac解码器
--enable-muxer=adts \           使用adts 容器格式,使用了这个才能创建aac文件格式数据


源码地址  https://github.com/XIAIBIANCHENG/AacRecord  




                                             
1 0