【问题标题】:Android - extract one channel from stereo .mp3, apply it through both channels of an AudioStreamAndroid - 从立体声 .mp3 中提取一个通道,通过 AudioStream 的两个通道应用它
【发布时间】:2018-04-29 02:51:43
【问题描述】:

我正在尝试加载一个 .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 文件执行此过程。是否需要将音频转换为其他格式才能区分通道?

【问题讨论】:

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


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-22
      • 1970-01-01
      • 2015-01-12
      • 1970-01-01
      • 2018-04-10
      • 1970-01-01
      • 2019-10-29
      相关资源
      最近更新 更多