FFmpeg7中使用swr_alloc_set_opts2()一直显示参数不正确
源码:
pCodec = avcodec_find_decoder(pFormatCtx->streams[audioStream]->codecpar->codec_id);
if(pCodec == NULL){
qDebug()<<"未找到解码器AVCodec";
}
//查找解码器AVCodecContext
pCodecCtx = avcodec_alloc_context3(NULL);
AVCodecParameters *codecpar = pFormatCtx->streams[audioStream]->codecpar;
if(avcodec_parameters_to_context(pCodecCtx,codecpar)<0){
qDebug()<<"初始化AVCodecContext失败";
return;
}
//打开解码器
if(avcodec_open2(pCodecCtx,pCodec,NULL)<0){
qDebug()<<"打开解码器失败";
return;
}
out_codec = avcodec_find_encoder(AV_CODEC_ID_PCM_S16LE);
out_codec_ctx = avcodec_alloc_context3(out_codec);
out_codec_ctx->sample_fmt = AV_SAMPLE_FMT_S16;
out_codec_ctx->sample_rate = pCodecCtx->sample_rate;
out_codec_ctx->ch_layout = pCodecCtx->ch_layout;
if (avcodec_open2(out_codec_ctx, out_codec, NULL) < 0) {
qDebug()<<"打开PCM解码器失败";
return;
}
//初始化AVFrame
pFrame = av_frame_alloc();
pFramePCM = av_frame_alloc();
swr_ctx = swr_alloc_set_opts2(NULL,
&out_codec_ctx->ch_layout,AV_SAMPLE_FMT_S16,out_codec_ctx->sample_rate,
&pCodecCtx->ch_layout,pCodecCtx->sample_fmt,pCodecCtx->sample_rate,
0, NULL);
swr_init(swr_ctx);