首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用libavcodec在AAC-LC,AAC-HE-V1,AAC-HE-V2中编码音频?

如何使用libavcodec在AAC-LC,AAC-HE-V1,AAC-HE-V2中编码音频?
EN

Stack Overflow用户
提问于 2013-09-19 20:36:47
回答 3查看 16K关注 0票数 2

我正在尝试使用libavcodec/ffmpeg API在AAC-LC、AAC-HE-V1、AAC-HE-V2中编码音频。

但是当我使用下面的配置和应用程序接口时,calls.It显示“无效的AAC配置文件”。

代码语言:javascript
复制
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(encoder_ctx->codec_id);
avcodec_open2(encoder_ctx, encoder, NULL);

你能解释一下这是怎么回事吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-09-20 00:53:01

首先看一下这个document:

杜比数码: ac3

杜比数码增强版: eac3

MP2: libtwolame,mp2

Windows Media音频1: wmav1

Windows Media Audio 2: wmav2

LC- aac : libfdk_aac、libfaac、aac、libvo_aacenc

HE-AAC: libfdk_aac,libaacplus

Vorbis: libvorbis,vorbis

MP3: libmp3lame,libshine

作品: libopus

通过以上阅读,您将清楚地看到,为了在HE-AAC/ HE-AAC-V2中编码音频,您必须使用libfdk_aac或libaacplus。

我将解释如何使用libfdk_aac来完成此操作:

首先,确保配置了ffmpeg以及以下选项:

代码语言:javascript
复制
--enable-libfdk_aac --enable-nonfree

现在构建ffmpeg并尝试运行以下命令,看看它是否工作:

代码语言:javascript
复制
ffmpeg -i <input file> -vcodec copy -acodec libfdk_aac -profile:a aac_he <output file>

如果正常工作,这意味着libav与libfdk_aac链接在一起。

现在为了在代码中使用它:

使用以下说明打开编码器:

代码语言:javascript
复制
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编码器!您可以使用的配置文件如此source中所示

票数 4
EN

Stack Overflow用户

发布于 2021-07-21 21:44:23

除了使用--enable-libfdk_aac之外,您可能还必须使用

代码语言:javascript
复制
--enable-encoder=libfdk_aac

如果您是选择性的并禁用了所有可用选项

代码语言:javascript
复制
--disable-everything

因此,在配置之后,请检查您是否有外部库:

代码语言:javascript
复制
External libraries:
libfdk_aac

和编码器:

代码语言:javascript
复制
Enabled encoders:
libfdk_aac
票数 1
EN

Stack Overflow用户

发布于 2013-09-19 20:41:11

我认为问题在于此编码器不支持AAC-HE。您可能希望在source code中检查这一点。支持的可能包括:

  • FF_PROFILE_AAC_MAIN
  • FF_PROFILE_AAC_LOW
  • FF_PROFILE_AAC_SSR
  • FF_PROFILE_AAC_LTP

您可能需要使用libfdk_aac编解码器,它支持AAC-HE。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18894810

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档