gpt4 book ai didi

android - 从android中的mp3文件获取pcm数据

转载 作者:行者123 更新时间:2023-11-29 18:14:02 27 4
gpt4 key购买 nike

我的问题很简单。如何从 mp3 文件中获取 PCM 数据?

现在我找到了从歌曲中获取 PCM 字节的唯一方法,我通过 MediaPlayer 加载并播放了 mp3,并尝试通过 Visualizer.OnDataCaptureListener 聆听波形的变化.该接口(interface)的方法传递一个 byte[] bytes 参数。我试图将所有这些字节保存到一个字节数组中,然后我将这个数组传递给 AudioTrack.write 方法并通过 AudioTrack.play 方法播放它。像这样:

    mVisualizer.setDataCaptureListener(new Visualizer.OnDataCaptureListener() {
public void onWaveFormDataCapture(Visualizer visualizer, byte[] bytes,
int samplingRate) {
// allBytes += bytes
}
public void onFftDataCapture(Visualizer visualizer, byte[] bytes, int samplingRate) {
}
, Visualizer.getMaxCaptureRate() / 2, true, false);
}

然后

AudioTrack tr = new AudioTrack(AudioManager.STREAM_MUSIC, 22050, 
AudioFormat.CHANNEL_OUT_STEREO,
AudioFormat.ENCODING_PCM_16BIT,
allBytes.length, AudioTrack.MODE_STREAM);
tr.play();
tr.write(barr, 0, allBytes.length);

但不幸的是我没有得到预期的结果。声音在播放,但声音中有很多噪音,质量很差,您实际上无法识别那里在唱什么。

但这是获取 PCM 数据的某种“破解方法”。你能说是否有正常的方法从我的 mp3 中获取 PCM 数据?

最佳答案

我正在使用 mpg123 native 库来解码我的 MP3。它解码成短裤而不是字节的 PCM 数据。我相信您可以进行转换。解码器速度非常快,因为它使用 NDK。

http://www.badlogicgames.com/wordpress/?p=446

此外,

我不确定您的文件有多大,但我会将字节流式传输到 AudioTrack,而不是将整首歌曲放在一个大数组中。

关于android - 从android中的mp3文件获取pcm数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9167501/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com