我尝试加载.mp3文件,并区分左右声道。我想从左声道复制数据并创建一个AudioStream,它通过左右声道播放左声道的数据。
我一直在尝试使用此代码实现它,但它似乎产生了一个难以理解的字节数组
InputStream inputStream = getApplicationContext().getResources().openRawResource(R.raw.flume);
soundBytes1 = new byte[inputStream.available()];
soundBytes1 = toByteArray(inputStream);
public byte[] toByteArray(InputStream in) throws IOException {
ByteArrayOutputStream out = new ByteArrayOutputStream();
int read = 0;
byte[] buffer = new byte[1024];
while (read != -1) {
read = in.read(buffer);
if (read != -1)
out.write(buffer,0,read);
}
out.close();
return out.toByteArray();
}
我希望能够使用任何.mp3文件执行此过程。是否有必要将音频转换为其他格式以便区分频道?
答案 0 :(得分:0)
是否有必要将音频转换为其他格式才能区分频道?
是。与大多数有损格式一样,MP3将音频通道组合在一起(在大多数情况下)并有效地存储它们之间的差异。这节省了大量带宽,因为左右轨道通常非常相似。保存此带宽可提高给定比特率的整体质量。
因此,您不能只读取一个通道的帧,然后读取下一个通道的帧。您必须先将MP3音频解码回PCM。