我正在使用 FFMPEG avcodec_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 样本)?
问候,
最佳答案
使用 ffmpeg 库中包含的“swresample”库,它存在于此类情况。您可以在他们的代码存储库中找到有关如何执行此操作的示例。
关于c++ - FFMPEG 音频解码 : efficient conversion from short to float sample buffer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15816183/