【问题标题】:FFMPEG audio decoding: efficient conversion from short to float sample bufferFFMPEG 音频解码:从短采样缓冲区到浮点采样缓冲区的高效转换
【发布时间】:2013-03-26 19:42:21
【问题描述】:

我正在使用 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 样本)?

问候,

【问题讨论】:

    标签: c++ ffmpeg type-conversion audio-processing


    【解决方案1】:

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

    【讨论】:

    • 谢谢,这正是我想要的。
    猜你喜欢
    • 1970-01-01
    • 2012-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-29
    • 2016-09-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多