音频值的播放缓冲区 - iOS

Posted

技术标签:

【中文标题】音频值的播放缓冲区 - iOS【英文标题】:Playback buffer of audio values - iOS 【发布时间】:2012-04-02 08:35:42 【问题描述】:

我正在尝试播放我在 Objective-C 中创建的示例音频值的 NSArray。我已经毫无问题地生成了这些值,但是如何通过 iPhone 回放它们呢?

谢谢

【问题讨论】:

【参考方案1】:

我建议将 NSArray 转换为 NSData 对象,然后使用 AVAudioPlayer 方法 initWithData:error: (see here) 加载为可播放的音频。 AVAudioPlayer 的优点是相对于 Audio Queue 和 Audio Unit 方法使用起来非常简单。

如何将 NSArray 转换为 NSData 取决于您的样本类型(this SO post 可能会告诉您如何做到这一点,尽管 NSKeyedArchiver 归档过程可能会影响您的样本)。我建议,如果您的示例生成过程允许,只需将您的示例创建为 NSData 对象并跳过此类转换。

【讨论】:

【参考方案2】:

将 NSArray 中的值复制到适当缩放的 PCM 样本的 C 数组中。然后,您可以通过添加 RIFF 标头将此数组转换为 WAV 文件并使用 AVAudioPlayer 播放此文件,或者您可以直接将 PCM 样本输入音频队列的 C 数组缓冲区或音频回调中的 RemoteIO 音频单元。

【讨论】:

以上是关于音频值的播放缓冲区 - iOS的主要内容,如果未能解决你的问题,请参考以下文章

播放 iOS 的远程音频缓冲区时如何避免机器人声音?

哪个 API 从 ios 和 osx 中的缓冲区播放音频?

如何在 iOS 中使用原始数据播放音频?

如何在 iOS 中使用 AVPlayer 缓冲音频?

iOS:如何在我的音乐应用程序中播放蓝牙耳机中的缓冲音频?

ios中的音频流持续时间