0

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

4

1 回答 1

1

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

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

于 2012-05-10T23:03:36.650 回答