Android 我可以从MediaPlayer或SoundPool获取原始PCM数据吗?

Android 我可以从MediaPlayer或SoundPool获取原始PCM数据吗?,android,android-mediaplayer,pcm,Android,Android Mediaplayer,Pcm,我使用eclipse和android sdk 4.0.3 api lvl 15来创建一个基本的音乐播放器应用程序 我阅读并发现有两种主要的课程可以播放声音。MediaPlayer和声音池。SoundPool在声音优先级和播放声音的速率方面具有更大的灵活性 我还想画一个音频的可视化图形 是否有办法从加载的音频资源中获取原始PCM数据,以便我能够绘制图表 有没有办法在实时播放原始数据之前对其进行操作?例如,如果我想添加实时效果。这些课程可以吗?还是别的 我想使用其中一个类的主要原因是,它们可以读取音

我使用eclipse和android sdk 4.0.3 api lvl 15来创建一个基本的音乐播放器应用程序

我阅读并发现有两种主要的课程可以播放声音。MediaPlayer和声音池。SoundPool在声音优先级和播放声音的速率方面具有更大的灵活性

我还想画一个音频的可视化图形

是否有办法从加载的音频资源中获取原始PCM数据,以便我能够绘制图表

有没有办法在实时播放原始数据之前对其进行操作?例如,如果我想添加实时效果。这些课程可以吗?还是别的

我想使用其中一个类的主要原因是,它们可以读取音频格式,而无需我自己读取文件并将格式解析为原始PCM数据

如能提供有关该问题的任何信息,将不胜感激

谢谢


Kfir

我强烈感觉你从这些Android类中获得PCM太不走运了。它们当然与本机层有太多的联系(由于性能原因),并且在不同的api版本或设备上实现也不同。如果您还没有找到任何与PCM相关的API,则可能没有


解决方案是自己制作音频混音器,使用Java或C/C++,然后就有了PCM数据。我预计将PCM数据传输到Java、在Java中处理、发送回音频播放会非常缓慢。您可能需要进行NDK编程。

他们来看看以字节为单位读取的音频曲目。您可以在实际播放声音之前操纵声音的字节数组

Audiotrack显然更易于控制,因为您可以访问原始数据,但您必须自己完成工作,而不是仅使用资产文件加载类(MediaPlayer)

再看一下这个将资产读入字节数组的示例

我不确定是否可以使用字节数组绘制图形


希望这对您有所帮助;-)恐怕Android的音频部分没有那么好的文档记录,而且从第一天起就没有了\

我一直在经历一个开源项目

因为他们已经加载了音频文件的PCM

这是你的电话号码


希望它能帮助您从音频文件中提取PCM。

谢谢。似乎我需要坚持ndk编程,以完全实现将音频文件解析为pcm原始数据的目标。一旦解析完成,AudioTrack将是最有用的播放方式。