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

时间:2012-03-18 22:39:03

标签: android android-mediaplayer pcm

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

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

我还想绘制音频的可视化图表。

有没有办法从加载的音频资产中获取原始PCM数据,以便我能够绘制图形?

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

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

非常感谢有关该问题的任何信息。

谢谢!

幼狮

3 个答案:

答案 0 :(得分:3)

嘿,看看AudioTrack的字节读数。您可以在实际播放之前操纵声音的字节数组。 http://developer.android.com/reference/android/media/AudioTrack.html

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

另请参阅此示例,将资源读入字节数组http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/content/ReadAsset.html

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

希望这会对你有所帮助;-) Android的audiopart真的没有那么好记录我害怕并且从那天起就没有了; \

答案 1 :(得分:3)

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

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

这是link

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

答案 2 :(得分:1)

我强烈感觉你从这些Android课程中获取PCM是不幸的。它们肯定与本机层绑定太多(由于性能),并且各种api版本或设备的实现也不同。如果您还没有找到任何与PCM相关的API,那么可能没有。

解决方案是自己制作音频混音器,无论是Java还是C / C ++,然后你就拥有了PCM数据。我希望将PCM数据传输到Java,在那里处理它,发送回音频回放是相当慢的。您可能不得不接受NDK编程。