请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

aac编码profile参数的问题

这是我的代码:
//打开编码器
//avcodec_find_encoder(AV_CODEC_ID_AAC);
AVCodec *codec = avcodec_find_encoder_by_name(“libfdk_aac”);

//创建 codec 上下文
AVCodecContext *codec_ctx = avcodec_alloc_context3(codec);

codec_ctx->sample_fmt = AV_SAMPLE_FMT_S16;          //输入音频的采样大小
codec_ctx->channel_layout = AV_CH_LAYOUT_STEREO;    //输入音频的channel layout
codec_ctx->channels = 2;                            //输入音频 channel 个数
codec_ctx->sample_rate = 44100;                     //输入音频的采样率
codec_ctx->bit_rate = 32000; //AAC_LC: 128K, AAC HE: 64K, AAC HE V2: 32K

// codec_ctx->profile = FF_PROFILE_AAC_HE_V2; //阅读 ffmpeg

这是支持的编码方式
Supported profiles for codec ‘libfdk_aac’:
Profile: 1 (LC)
Profile: 4 (HE-AAC)
Profile: 28 (HE-AACv2)
Profile: 22 (LD)
Profile: 38 (ELD)
我在编码aac的时候

// codec_ctx->profile = FF_PROFILE_AAC_HE_V2; 我把这行注释掉就是正常的,如果添加了这一行就是杂音,但是隐约能听到一点声音,请问老师这个是什么原因,找了好久没找到原因

正在回答 回答被采纳积分+3

插入代码

1回答

李超 2025-03-04 18:32:54

如果你的PCM是单声道的就会有这个问题,不要保证PCM是双声道

0 回复 有任何疑惑可以回复我~
  • 提问者 qq_不弃_6 #1
    是双声道的,我录制完重采样使用ffplay播放参数是双声道-ac 2播放是正常的
    重采样配置是这样的
    swr_ctx = swr_alloc_set_opts(NULL, AV_CH_LAYOUT_STEREO, AV_SAMPLE_FMT_S16, 44100, AV_CH_LAYOUT_STEREO, AV_SAMPLE_FMT_FLT, 44100, 0, NULL);
    使用ffplay -ar 44100 -ac 1 -f s16le /Users/wangxingxin/Desktop/ffmpegdemo/audio.pcm播放重采样正常
    使用这个pcm去编码,配置了profile就会杂音
    回复 有任何疑惑可以回复我~ 2025-03-04 22:09:01
  • 李超 回复 提问者 qq_不弃_6 #2
    你用ffplay -ar 44100 -ac 1 -f s16le /Users/wangxingxin/Desktop/ffmpegdemo/audio.pcm正常播放说明你的PCM是单通道,双通道的命令参数中 -ac 2,才表示双通道
    回复 有任何疑惑可以回复我~ 2025-03-05 06:56:14
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号