我正在使用 ffmpeg 将 PCM 数据编码为 AAC 格式:以下是我设置上下文对象的代码:
-(id)encode:(short*)data{
AVCodecContext *audioCodec;
AVCodec *codec;
avcodec_register_all();
//Set up audio encoder
codec = avcodec_find_encoder(AV_CODEC_ID_AAC);
if (codec == NULL){
NSLog(@"no codec");
}
audioCodec = avcodec_alloc_context3(codec);
audioCodec->strict_std_compliance = -2;
audioCodec->bit_rate = 64000;
audioCodec->sample_fmt = AV_SAMPLE_FMT_S16;
audioCodec->sample_rate = 8000;
audioCodec->channels = 2;
audioCodec->profile = FF_PROFILE_AAC_MAIN;
audioCodec->time_base = (AVRational){1, 8000};
audioCodec->codec_type = 1;
if (avcodec_open2(audioCodec, codec, NULL)) {
NSLog(@"could not open codec");
}
return @"NO";
}
Run Code Online (Sandbox Code Playgroud)
我总是收到错误日志:aac @ 0x151cda00] 指定的示例格式 s16 无效或不受支持
如果我不提供任何示例格式,我会得到相同的日志:aac @ 0x151cda00] Specified sample format …