0

我正在使用 FFMPEGavcodec_decode_audio解码各种类型的音频输入文件。生成的样本是 SHORT 类型。

这些样本由另一个库处理,该库需要 FLOAT 输入格式的样本。最后,为了播放(在 Android 上),我需要再次将 FLOAT 样本转换回 SHORT:

short* inputSamples = ...;
float* tmpBuffer = new float[nrInputSamples];
for (int i=0; i<nrInputSamples; i++)
  tmpBuffer[i] = inputSamples[i]/32767.0f;

//process audio here

for (int i=0; i<nrInputSamples; i++)
  inputSamples[i] = tmpBuffer[i]*32767.0f;

有没有更有效的方法来做到这一点(例如强制 ffmpeg 将音频解码为 FLOAT 样本)?

问候,

4

1 回答 1

2

使用 ffmpeg 库中包含的 'swresample' 库,它适用于此类情况。您可以在他们的代码存储库中找到有关如何执行此操作的示例。

于 2013-04-04T16:11:07.373 回答