2014-01-11 45 views
0

我正在使用MPG123库将MP3解码为PCM数据。我想对PCM数据应用FFT,特别是左声道。 mpg123_read函数使用PCM数据填充char数组。我怎样才能从这个char数组中提取左声道的PCM数据?从MPG123输出中提取左声道PCM数据

回答

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]; 
    } 
} 

其中具有原始输入指针,左左缓冲区指针,权缓冲器指针,和len以字节为单位输入流的长度。

+0

我还发现这篇文章有很大的帮助:http://blog.bjornroche.com/2013/05/the-abcs-of-pcm-uncompressed-digital.html – Kevin