如何仅使用 AVAudioPlayer 或 AVPlayer 播放 PCM 数据/缓冲区?

Posted

技术标签:

【中文标题】如何仅使用 AVAudioPlayer 或 AVPlayer 播放 PCM 数据/缓冲区?【英文标题】:How to play PCM data/buffer just using AVAudioPlayer or AVPlayer? 【发布时间】:2015-01-29 19:20:13 【问题描述】:

我知道,我可以通过将数据输入播放回调方法来使用 AudioUnit/AudioQueue 播放 PCM 数据/缓冲区。但不想这样做。

我在谷歌上搜索了很多,但找不到任何有用的答案或任何示例代码来做到这一点。任何帮助将不胜感激。

【问题讨论】:

【参考方案1】:

如果它对其他人有帮助,我正在回答我自己的问题。经过几天的不懈努力,我终于让它工作了。虽然以不同的方式。我在 RAW PCM 数据之上添加了一个 wav 标头信息,并保存了一个扩展名为 .wav 的文件。然后只需使用 AVAudioPlayer 或 AVPlayer 播放文件。在这里,您将在How to add playable(such as wav,wmv) header with PCM data/buffer in ios 上获得完整的示例代码 哦。

【讨论】:

有没有办法在外部设置 AVAudioPlayer 格式,然后只写入 PCM 样本? android 有类似 AudioTrack 类的东西...【参考方案2】:

PCM 数据未指定可读格式,因此 AVPlayer 将无法播放。您必须将 PCM 数据保存为播放器支持的音频文件格式。

【讨论】:

以上是关于如何仅使用 AVAudioPlayer 或 AVPlayer 播放 PCM 数据/缓冲区?的主要内容,如果未能解决你的问题,请参考以下文章

强制 Android 使用 RTSP/AVP/TCP 交错

iPhone SDK:使用核心音频 AVAudioPlayer 更改播放速度

AVAudioPlayer 如何播放快或慢文件

访问 iPod 库以使用 AVAudioPlayer 或使用 AVPlayer 远程控制事件

AVAudioPlayer 在停止或恢复时“滴答”

同步Iphone中两个或多个AVAudioPlayer的播放