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

xiaoxiao2021-02-28  68

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/bash NDK="/home/wh/android-ndk-r12b" SYSROOT=$NDK/platforms/android-9/arch-arm/ TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64 function 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_FLAG make install } CPU=arm PREFIX=$(pwd)/android/$CPU ADDI_CFLAGS="-marm -I/home/wh/FFmpeg-n3.1.3/fdkacc/include/ -DANDROID" ADDI_LDFLAGS="-L/home/wh/FFmpeg-n3.1.3/fdkacc/lib/" CPU=armv5te OPTIMIZE_CFLAGS="-marm -march=$CPU" PREFIX=./android/$CPU ADDITIONAL_CONFIGURE_FLAG="--disable-armv6 --disable-armv6t2 --disable-vfp --disable-neon" build_one #arm v7n CPU=armv7-a OPTIMIZE_CFLAGS="-marm -march=$CPU" PREFIX=./android/$CPU ADDITIONAL_CONFIGURE_FLAG=--enable-neon build_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    

 

 

 

             
转载请注明原文地址: https://www.6miu.com/read-62404.html

最新回复(0)