Audio 如何使用libavcodec对AAC-LC、AAC-HE-V1、AAC-HE-V2中的音频进行编码?
我正在尝试使用libavcodec/ffmpegapi对AAC-LC、AAC-HE-V1、AAC-HE-V2中的音频进行编码 但当我使用以下配置和API调用时,它会显示“无效的AAC配置文件”Audio 如何使用libavcodec对AAC-LC、AAC-HE-V1、AAC-HE-V2中的音频进行编码?,audio,ffmpeg,libavcodec,transcoding,libav,Audio,Ffmpeg,Libavcodec,Transcoding,Libav,我正在尝试使用libavcodec/ffmpegapi对AAC-LC、AAC-HE-V1、AAC-HE-V2中的音频进行编码 但当我使用以下配置和API调用时,它会显示“无效的AAC配置文件” 您能解释一下这有什么问题吗?我想问题是这个编码器不支持AAC-HE。你可能想登记一下。受支持的可能是: FF\u PROFILE\u AAC\u MAIN FF\u配置文件\u AAC\u低 FF\U配置文件\U AAC\U SSR FF\u PROFILE\u AAC\u LTP 您可能需要使用支持
您能解释一下这有什么问题吗?我想问题是这个编码器不支持AAC-HE。你可能想登记一下。受支持的可能是:
FF\u PROFILE\u AAC\u MAIN
FF\u配置文件\u AAC\u低
FF\U配置文件\U AAC\U SSR
FF\u PROFILE\u AAC\u LTP
您可能需要使用支持aac-HE的
libfdk_aac
编解码器。我想问题在于此编码器不支持aac-HE。你可能想登记一下。受支持的可能是:
FF\u PROFILE\u AAC\u MAIN
FF\u配置文件\u AAC\u低
FF\U配置文件\U AAC\U SSR
FF\u PROFILE\u AAC\u LTP
您可能需要使用具有aac-HE支持的
libfdk_aac
编解码器。首先看一下这个
杜比数码:ac3
杜比数码+:eac3
MP2:libtwolame,MP2
Windows Media Audio 1:wmav1
Windows Media Audio 2:wmav2
LC-AAC:libfdk_AAC、libfaac、AAC、libvo_aacenc
HE-AAC:libfdk_AAC,libaacplus
沃比斯:利沃比斯,沃比斯
MP3:libmp3lame,libshine
作品:Lipopus
从上面的阅读中,您可以清楚地看到,为了在HE-AAC/HE-AAC-V2中编码音频,您必须使用libfdk_AAC或libaacplus
我将解释如何使用libfdk_aac实现这一点:
首先确保配置ffmpeg以及以下选项:
--enable-libfdk_aac--enable-nonfree
现在构建ffmpeg并尝试运行以下命令,看看它是否有效:
ffmpeg-i-vcodec copy-acodec libfdk_aac-profile:a aac_he
如果这样做有效,则意味着libav与libfdk_aac链接
现在,为了在代码中使用它:
按照以下说明打开编码器:
AVCodecContext *encoder_ctx;
encoder_ctx->codec_id = AV_CODEC_ID_AAC;
encoder_ctx->sample_fmt = AV_SAMPLE_FMT_S16;
encoder_ctx->profile = FF_PROFILE_AAC_HE;
encoder = avcodec_find_encoder_by_name("libfdk_aac");
// if you still try to open it using avcodec_find_encoder it will open libfaac only.
avcodec_open2(encoder_ctx, encoder, NULL);
我们开始吧,你打开了libfdk_aac编码器!
您可以使用的配置文件如下所示。首先,请看一下 杜比数码:ac3 杜比数码+:eac3 MP2:libtwolame,MP2 Windows Media Audio 1:wmav1 Windows Media Audio 2:wmav2 LC-AAC:libfdk_AAC、libfaac、AAC、libvo_aacenc HE-AAC:libfdk_AAC,libaacplus 沃比斯:利沃比斯,沃比斯 MP3:libmp3lame,libshine 作品:Lipopus 从上面的阅读中,您可以清楚地看到,为了在HE-AAC/HE-AAC-V2中编码音频,您必须使用libfdk_AAC或libaacplus 我将解释如何使用libfdk_aac实现这一点: 首先确保配置ffmpeg以及以下选项:
--enable-libfdk_aac--enable-nonfree
现在构建ffmpeg并尝试运行以下命令,看看它是否有效:
ffmpeg-i-vcodec copy-acodec libfdk_aac-profile:a aac_he
如果这样做有效,则意味着libav与libfdk_aac链接
现在,为了在代码中使用它:
按照以下说明打开编码器:
AVCodecContext *encoder_ctx;
encoder_ctx->codec_id = AV_CODEC_ID_AAC;
encoder_ctx->sample_fmt = AV_SAMPLE_FMT_S16;
encoder_ctx->profile = FF_PROFILE_AAC_HE;
encoder = avcodec_find_encoder_by_name("libfdk_aac");
// if you still try to open it using avcodec_find_encoder it will open libfaac only.
avcodec_open2(encoder_ctx, encoder, NULL);
我们开始吧,你打开了libfdk_aac编码器!
您可以使用的配置文件如下所示