Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Audio 如何使用libavcodec对AAC-LC、AAC-HE-V1、AAC-HE-V2中的音频进行编码?_Audio_Ffmpeg_Libavcodec_Transcoding_Libav - Fatal编程技术网

Audio 如何使用libavcodec对AAC-LC、AAC-HE-V1、AAC-HE-V2中的音频进行编码?

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 您可能需要使用支持

我正在尝试使用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的
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编码器! 您可以使用的配置文件如下所示