从MPG123输出中提取左声道PCM数据

时间:2014-01-11 20:06:17

标签: c audio fft pcm

我正在使用MPG123库将MP3解码为PCM数据。我想对PCM数据应用FFT,特别是左声道。 mpg123_read函数使用PCM数据填充char数组。如何从此char数组中提取左声道的PCM数据?

1 个答案:

答案 0 :(得分:0)

假设音频是立体声的,一旦你有两个第一个字节的原始PCM对应左声道音频,两个跟随右声道音频,所以你可以将它们视为短路然后第一个短路表示左声道和右声道。因此,如果您想获得左声道数据,则必须使用输入原始PCM进行循环并保存每一个短路。像这样:

void demux(short in[], short left[], short right[], int len) {
    for (int i=0; i<len/2; i+2) {
       left[i] = in[i];
       right[i+1] = in[i+1];
    }
}

其中in具有原始输入指针,左侧缓冲区指针,右侧缓冲区指针,以及以字节为单位的输入流长度。