Android-从stereo.mp3中提取一个频道,通过音频流的两个频道应用它
我正在尝试加载一个.mp3文件,并区分左声道和右声道。我想复制左声道的数据,并创建一个音频流,通过左声道和右声道播放左声道的数据 我一直试图用这段代码实现它,但它似乎产生了一个无法识别的字节数组Android-从stereo.mp3中提取一个频道,通过音频流的两个频道应用它,android,audio,mp3,audio-streaming,android-music-player,Android,Audio,Mp3,Audio Streaming,Android Music Player,我正在尝试加载一个.mp3文件,并区分左声道和右声道。我想复制左声道的数据,并创建一个音频流,通过左声道和右声道播放左声道的数据 我一直试图用这段代码实现它,但它似乎产生了一个无法识别的字节数组 InputStream inputStream = getApplicationContext().getResources().openRawResource(R.raw.flume); soundBytes1 = new byte[inputStream.available()];
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文件执行此过程。是否需要将音频转换为其他格式以区分频道
是否需要将音频转换为其他格式以区分频道
对。与大多数有损格式一样,MP3将音频通道组合在一起(在大多数情况下),并有效地存储它们之间的差异。这节省了大量带宽,因为左右轨迹通常非常相似。节省此带宽可以提高给定比特率的总体质量
因此,您不能只读取一个通道的帧,然后再读取下一个通道的帧。您必须先将MP3音频解码回PCM