在调用FFmpeg的接口进行音频解码时,需要设置解码器的参数,包括采样率、声道数等。以下是一个简单的示例:
```c++ // 打开文件 AVFormatContext *formatCtx = nullptr; if (avformatopeninput(&formatCtx, inputFileName.c_str(), nullptr, nullptr) != 0) { // 打开文件失败 return; }
// 获取音频流信息 if (avformatfindstream_info(formatCtx, nullptr) < 0) { // 获取音频流信息失败 avformatcloseinput(&formatCtx); return; }
// 查找音频流 int audioStreamIndex = -1; for (int i = 0; i < formatCtx->nbstreams; i++) { if (formatCtx->streams[i]->codecpar->codectype == AVMEDIATYPEAUDIO) { audioStreamIndex = i; break; } } if (audioStreamIndex == -1) { // 没有找到音频流 avformatcloseinput(&formatCtx); return; }
// 获取解码器 AVCodecParameters *codecParams = formatCtx->streams[audioStreamIndex]->codecpar; AVCodec *codec = avcodecfinddecoder(codecParams->codec_id); if (!codec) { // 没