Android-从stereo.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()];

我正在尝试加载一个.mp3文件,并区分左声道和右声道。我想复制左声道的数据,并创建一个音频流,通过左声道和右声道播放左声道的数据

我一直试图用这段代码实现它,但它似乎产生了一个无法识别的字节数组

    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