2013-04-04 99 views
0

我正在使用FFMPEG avcodec_decode_audio *来解码各种类型的音频输入文件。所得到的样品是SHORT型。FFMPEG音频解码:从短暂浮动采样缓冲区高效转换

这些样本与另一个需要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样本) ?

问候,

回答

2

使用,包含在ffmpeg的库中的“swresample”库,它存在这样的情况下。你可以找到关于如何在代码库中执行此操作的示例。

+0

谢谢,这正是我一直在寻找的。 – Hyndrix 2013-04-04 16:41:27