0
我正在使用MPG123库将MP3解码为PCM数据。我想对PCM数据应用FFT,特别是左声道。 mpg123_read函数使用PCM数据填充char数组。我怎样才能从这个char数组中提取左声道的PCM数据?从MPG123输出中提取左声道PCM数据
我正在使用MPG123库将MP3解码为PCM数据。我想对PCM数据应用FFT,特别是左声道。 mpg123_read函数使用PCM数据填充char数组。我怎样才能从这个char数组中提取左声道的PCM数据?从MPG123输出中提取左声道PCM数据
假设音频是立体声,一旦你有两个第一个字节的原始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以字节为单位输入流的长度。
我还发现这篇文章有很大的帮助:http://blog.bjornroche.com/2013/05/the-abcs-of-pcm-uncompressed-digital.html – Kevin