Android - 从立体声.mp3中提取一个频道,通过AudioStream的两个频道应用它

时间:2018-04-29 02:51:43

标签: android audio mp3 audio-streaming android-music-player

我尝试加载.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文件执行此过程。是否有必要将音频转换为其他格式以便区分频道?

1 个答案:

答案 0 :(得分:0)

  

是否有必要将音频转换为其他格式才能区分频道?

是。与大多数有损格式一样,MP3将音频通道组合在一起(在大多数情况下)并有效地存储它们之间的差异。这节省了大量带宽,因为左右轨道通常非常相似。保存此带宽可提高给定比特率的整体质量。

因此,您不能只读取一个通道的帧,然后读取下一个通道的帧。您必须先将MP3音频解码回PCM。