从 AudioUnit 格式转换为 ExtAudioFileWrite

Posted

技术标签:

【中文标题】从 AudioUnit 格式转换为 ExtAudioFileWrite【英文标题】:converting from AudioUnit format for ExtAudioFileWrite 【发布时间】:2013-07-10 21:12:13 【问题描述】:

我有一个完全由 Apple AudioUnits 组成的 AUGraph - DLSSynth、Delay、Stereo Mixer。我正在尝试将其输出捕获到 ExtAudioFile 中。我的问题是我认为我需要将 AudioUnit 格式转换为 ExtAudioFile 可以使用的文件格式。如果我从 AUGraph 中获取 ASBD,我会得到

mSampleRate Float64 44100
mFormatID   UInt32  1819304813
mFormatFlags    UInt32  41  
mBytesPerPacket UInt32  4   
mFramesPerPacket    UInt32  1   
mBytesPerFrame  UInt32  4   
mChannelsPerFrame   UInt32  2   
mBitsPerChannel UInt32  32  
mReserved   UInt32  0   

但是如果没有 fmt,我不能用那个 ASBD 创建一个 ExtAudioFile 吗?错误。有人可以指出将此流记录到文件的正确方向吗?

【问题讨论】:

我几乎没有使用那么多 AU,但我通常不需要为音频文件指定 ASBD。当您调用 ExtAudioFileWriteAsync 而不在文件上设置 ASBD 时会发生什么?你得到什么样的错误?另外,尝试写入哪些数据和文件格式? 【参考方案1】:

您想将该 ASBD 用作您的 ExtAudioFile 的客户端格式 (kExtAudioFileProperty_ClientDataFormat),在文件创建后通过属性设置。这是您在ExtAudioFileWrite 中传递的数据的格式。输出文件的格式在ExtAudioFileOpen中指定。

【讨论】:

谢谢!我知道它应该是相当简单的。

以上是关于从 AudioUnit 格式转换为 ExtAudioFileWrite的主要内容,如果未能解决你的问题,请参考以下文章

OS X AudioUnit:在生成器上设置杂项属性时出现 kAudio_ParamError

无法访问编解码器。 (-66672)

AudioUnit 输入示例

使用 MIDI 键盘 OSX 控制 AudioUnit

配置 Mac OS X AudioUnit 以提供 SignedInteger 示例

AudioUnit播放PCM问题