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

Posted

技术标签:

【中文标题】OS X 播放音频帧是不是发送给我【英文标题】:OS X play Audio Frames are they are sent to meOS X 播放音频帧是否发送给我 【发布时间】:2012-05-10 19:15:33 【问题描述】:

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

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

以上是关于OS X 播放音频帧是不是发送给我的主要内容,如果未能解决你的问题,请参考以下文章

录制和播放从麦克风录制的音频流

企业微信直播上课播放视频时杂音太大怎么回事

Android音频开发:如何播放一帧音频

播放音频时 Alsa 缓冲区溢出

尝试播放音频,给我 null

如何在 Mac OS X 中检测是不是连接了蓝牙音频设备?