我正在使用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样本)?
此致
答案 0 :(得分:2)
使用ffmpeg库中包含的'swresample'库,它适用于此类情况。您可以在代码库中找到有关如何执行此操作的示例。