OS X播放音频帧是发送给我的

时间:2012-05-10 19:15:33

标签: macos audio osx-lion core-audio avaudioplayer

我可以在OS X 10.7中使用什么API来输出由我无法改变的现有对象生成的线性PCM音频帧,并将其传递给我创建的类的对象?我无法访问原始音频流,只能访问数据包。是否可以将CoreAudio AudioUnit或AudioQueue或者AVAudioPlayer设置为在将这些帧发送到我的对象时简单地播放这些帧?

1 个答案:

答案 0 :(得分:1)

Mac OS X或iOS设备上没有可以播放PCM音频样本流的公共API,因为它们是由现有源生成的。

音频队列和(RemoteIO)音频单元API都是基于回调(“拉”),以严格的采样率运行,并具有实时要求(例如,您不能只是等待回调中的数据)。您的对象必须保存音频PCM帧,因为它们是由源生成的,在其自己的缓冲区或数据结构中,然后以音频回调请求的数量从这些缓冲区中复制样本。您的对象可能还必须在启动音频之前预先加载一些缓冲区,如果以低于音频回调要求的速率生成样本,则自适应地处理下溢,以及如果它接收的数据多于它可以在某处缓冲并播放,则处理溢出及时。