Android 自定义音频播放器,用 libPd 或 OpenSL ES 或 AudioTrack 替换 MediaPlayer
Posted
技术标签:
【中文标题】Android 自定义音频播放器,用 libPd 或 OpenSL ES 或 AudioTrack 替换 MediaPlayer【英文标题】:Android custom audio player to replace MediaPlayer with libPd or OpenSL ES or AudioTrack 【发布时间】:2014-01-28 10:51:46 【问题描述】:我已经使用 MediaPlayer API 开发了 Streaming Audio 应用程序。所有功能都可以正常工作,预计开始播放需要更多时间(缓冲时间更多)。
我想添加录制实时音频流(将实时流数据保存在磁盘中,而不是来自 MIC 的录制)。由于 MediaPlayer 不提供任何 API 来访问原始数据流,我计划构建自定义音频播放器。
我想控制缓冲时间,访问原始音频流,应该能够播放android原生支持的所有音频格式。哪个 api(libPd 或 OpenSL ES 或 AudioTrack)适合在 Android 中构建自定义音频播放器?
【问题讨论】:
AudioTrack
只播放原始 PCM,所以除非你想包含一个单独的解码器,否则它会被淘汰。
【参考方案1】:
根据我的经验,OpenSL_ES 将是选择,这里有一个Link,它解释了如何进行音频流传输,您可能会发现它很有用。 bufferframes 决定了您在播放前将收集多少样本,因此较小的 bufferframes 可以加快响应时间,但您必须在这与您的设备处理能力之间取得平衡。
【讨论】:
【参考方案2】:您也可以使用 libpd (pd-for-android) 进行录制。 所有的录制过程都由 libpd 管理。 检查 ScenePlayer 项目,它使用 libpd 并允许您将音频录制到 sdcard 上的文件夹中:
https://github.com/libpd/pd-for-android/tree/master/ScenePlayer
【讨论】:
以上是关于Android 自定义音频播放器,用 libPd 或 OpenSL ES 或 AudioTrack 替换 MediaPlayer的主要内容,如果未能解决你的问题,请参考以下文章