0

我正在尝试使用ExtAudioFile's自动频道布局映射,但它似乎没有像我预期的那样工作。

这就是我所做的:

  • 我打开一个 6 通道 WAVE 文件ExtAudioFileOpenURL()

  • 将客户端数据格式属性 ( kExtAudioFileProperty_ClientDataFormat) 设置为 6-Channel PCM Audio Unit Canonical

  • 只是出于好奇阅读文件的通道布局属性 ( kExtAudioFileProperty_FileChannelLayout) 生成的AudioChannelLayout结构有一个kAudioChannelLayoutTag_MPEG_5_1_A正确的(文件是 LRC-LFE-LS-RS)

  • 现在设置客户端通道布局属性 ( kExtAudioFileProperty_ClientChannelLayout),我使用稍微不同的kAudioChannelLayoutTag_MPEG_5_1_C,即 LCR-LS-RS-LFE,这是我想在音频图中使用的

  • 然后,将文件读ExtAudioFileRead()AudioBufferList

  • 缓冲区列表由音频图播放:预定的声音播放器 -> 矩阵混音器(将 5.1 信号下转换为立体声) -> 默认输出

一切正常,除了通道映射没有。矩阵混频器仍接收 LRC-LFE-LS-RS 流。

我检查了文档kExtAudioFileProperty_ClientChannelLayout

此属性的值指定AudioBufferList您传递给ExtAudioFileReadand ExtAudioFileWrite函数的列表中缓冲区的通道布局。此布局可能与文件的通道布局不同,在这种情况下,扩展音频文件对象的底层音频转换器执行重新映射。该属性必须在设置thekExtAudioFileProperty_ClientDataFormat属性后设置,并且两个布局中的通道数必须匹配。

我觉得我做对了,但我一定遗漏了一些东西……有没有人知道如何使这项工作发挥作用?

4

0 回答 0