在Android上寻找有关音频播放的帮助。我们有一个OpenGL应用程序(Java + C ++),现在我们想播放声音效果。玩家应该允许在播放时修改播放速率和音量。 可能是OpenSL或Audiotrack。
第一个问题? 有没有可以做这件事的免费或商业图书馆/包装?(可能是java或原生的)
..如果没有,我会解释到目前为止我们所做的,以及我们遇到的问题。
我们使用AudioTrack实例创建了MusicPlayer类(扩展了AsyncTask)。在activity的onResume()中,我们创建了它的5个实例,在线程池上执行它。在task的 doInBackground()中,我们有一个运行循环检查状态更改,加载文件和写入缓冲区。在JNI中,我们有单例存储事件队列并每10毫秒将它们发送到java一次。它以某种方式起作用,但距离不可接受。我们遇到以下问题:
我曾经用iOS写过Obj-C,并且有很多“随时可用”的解决方案(例如cocoacontrols)。从未想过在Android上处理声音会是一场噩梦; /任何帮助都将受到高度赞赏:)
答案 0 :(得分:0)
Android 4.0或更高版本不再支持播放速率控制。我不确定禁用它的原因是什么。我必须采用SOLA库实现的SoundTouch算法来为我的应用添加播放速率控制。
如果要使用它,则需要使用OpenSL编写播放器。有很多工作的例子。在将流发送到输出接收器之前,请使用算法并将其用于修改PCM流。
更新于2016年1月22日: Android似乎包含Sonic库到6.0版本。因此,应从Android M开始播放速率控制。