我正在使用ffmpeg(c++)将各种音频文件解码为44100立体声或单声道(根据源)。我必须保持这样,因为我也玩它们。
同时,我还需要这些的11025单声道版本。因此,我试图找到一种非常快速/简便的方法来将44100立体声PCM转换为没有ffmpeg的11025单声道以节省CPU。

在Java(android)或c++(ndk)中可能吗?

我已经在同一项目中使用Java和C++。

最佳答案

逐样本平均对于立体声到单声道转换是正确的,但是对于采样率转换,为什么不使用libsamplerate之类的库呢?即使那太重了,平均的确是很快的,但这不是正确的方法。是否可以接受取决于您的应用程序。我对此SO帖子的回答中描述了一种替代方法:

How to convert pcm samples in byte array as floating point numbers in the range -1.0 to 1.0 and back?

09-30 11:04