简体   繁体   English

使用 ffmpeg 原生 AAC 将原始 PCM 编码为 aac

[英]Encode raw PCM to aac using ffmpeg native AAC

I am trying to convert raw PCM to aac.So i am trying to achieve it through ffmpeg.我正在尝试将原始 PCM 转换为 aac。所以我正在尝试通过 ffmpeg 来实现它。

My ffmepg configuration我的 ffmepg 配置

--enable-cross-compile --arch=arm --cpu=armv6 --enable-asm --target-os=linux --disable-stripping --enable-neon --enable-version3 --disable-shared --enable-static --enable-gpl --enable-memalign-hack --cc=arm-linux-androideabi-gcc --ld=arm-linux-androideabi-ld --extra-cflags='-fPIC -DANDROID -D_ thumb _ -mthumb -Wfatal-errors -Wno-deprecated -marm -march=armv6 ' --disable-everything --enable-encoder=aac --enable-decoder=h264 --enable-hwaccels --disable-ffmpeg --disable-ffplay --disable-ffprobe --disable-ffserver --disable.network --enable-filter=buffer --enable-filter=buffersink --disable-demuxer=v4l --disable-demuxer=v4l2 --disable-indev=v4l --disable-indev=v4l2 --enable-cross-compile --arch=arm --cpu=armv6 --enable-asm --target-os=linux --disable-stripping --enable-neon --enable-version3 --disable-shared - -enable-static --enable-gpl --enable-memalign-hack --cc=arm-linux-androideabi-gcc --ld=arm-linux-androideabi-ld --extra-cflags='-fPIC -DANDROID - D_ thumb _ -mthumb -Wfatal-errors -Wno-deprecated -marm -march=armv6 ' --disable-everything --enable-encoder=aac --enable-decoder=h264 --enable-hwaccels --disable-ffmpeg - -disable-ffplay --disable-ffprobe --disable-ffserver --disable.network --enable-filter=buffer --enable-filter=buffersink --disable-demuxer=v4l --disable-demuxer=v4l2 --disable -indev=v4l --disable-indev=v4l2

avcodec_find_encoder(CODEC_ID_AAC)  find's the AAC encoder succesfully.

audio_context= avcodec_alloc_context()
avcodec_open(audio_context, audio_encoder)  failed to open aac 

any idea?任何的想法?

I think the answer is going to be in the ffmpeg portion of the logcat.我认为答案将在 logcat 的 ffmpeg 部分。 You should get debug level logging turned on in your ffmpeg libs and capture the log to find out where the codec_open statement is failing.您应该在 ffmpeg 库中打开调试级别日志记录并捕获日志以找出 codec_open 语句失败的位置。

provide the log here.在这里提供日志。

Instead of using ffmpeg inbuilt aac encoder try using libfaac.不要使用 ffmpeg 内置的 aac 编码器,而是尝试使用 libfaac。

First of all cross compile libfaac for android.首先为 android 交叉编译 libfaac。

in ffmpeg --extra-cflags provide path to your compiled libfaac's include directory.在 ffmpeg --extra-cflags中提供您编译的 libfaac 的包含目录的路径。

in --extra-ldflags provide path to your compiled libfaac's lib directory.--extra-ldflags 中提供您编译的 libfaac 的lib目录的路径。

in ffmpeg config.sh use --enable-libfaac在 ffmpeg config.sh中使用--enable-libfaac

Compile ffmpeg again with libfaac.用 libfaac 再次编译 ffmpeg。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM