![](/img/trans.png)
[英]How can I perform conversion from float -> double -> float when processing an audio buffer in c++
[英]FFMPEG audio decoding: efficient conversion from short to float sample buffer
我正在使用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'庫,它適用於此類情況。 您可以在其代碼存儲庫中找到有關如何執行此操作的示例。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.