使用 iOS 3d 混合器
Posted
技术标签:
【中文标题】使用 iOS 3d 混合器【英文标题】:Using iOS 3d Mixer 【发布时间】:2011-06-20 18:33:53 【问题描述】:我有一个相当简单的 AUGraph 设置,它带有一个连接到 I/O 单元的多通道混音器。通过回调函数访问播放,一切正常。
我正在尝试切换到 3D 混音器而不是多通道混音器。所以我将参数从 kAudioUnitSubType_MultiChannelMixer 切换到 kAudioUnitSubType_AU3DMixerEmbedded 并保持所有其他设置相同。
结果是一种尖锐的呜呜声,似乎开始听起来像什么,然后变成了呜呜声。我浏览了每个 3D 混合器单元的 parameters 并将它们设置为默认值,但没有任何变化。不过,打开和关闭 k3DMixerParam_Enable 参数确实可以使播放静音和取消静音。
我可能错过了什么设置?或者知道在哪里可以找到工作 3d 混合器的示例?
【问题讨论】:
【参考方案1】:如前所述,3d 混音器需要单声道输入。但是您还必须使用 UInt16 作为输入样本数据类型。这是一个有效的 AudiostreamBasicDescription:
AudioStreamBasicDescription streamFormat = 0;
size_t bytesPerSample = sizeof (UInt16);
streamFormat.mFormatID = kAudioFormatLinearPCM;
streamFormat.mFormatFlags = kAudioFormatFlagsCanonical;
streamFormat.mBytesPerPacket = bytesPerSample;
streamFormat.mFramesPerPacket = 1;
streamFormat.mBytesPerFrame = bytesPerSample;
streamFormat.mChannelsPerFrame = 1;
streamFormat.mBitsPerChannel = 8 * bytesPerSample;
streamFormat.mSampleRate = graphSampleRate;
// Set the input stream format of the desired 3D mixer unit audio bus
AudioUnitSetProperty (
mixerUnit,
kAudioUnitProperty_StreamFormat,
kAudioUnitScope_Input,
audioBus,
&streamFormat,
sizeof (streamFormat)
);
【讨论】:
虽然这在本例中是隐含的,但大端标志必须关闭。【参考方案2】:正如所有答案已经提到的:iOS 上的 3D 混音器需要单声道输入。
在 iOS 8 / Xcode 6 上,规范格式的概念已被弃用,我发现此(且仅此)单声道流格式描述可用作 3D 混音器输入总线流格式描述:
AudioStreamBasicDescription monoStreamFormat = 0;
monoStreamFormat.mSampleRate = sampleRate;
monoStreamFormat.mFormatID = kAudioFormatLinearPCM;
monoStreamFormat.mFormatFlags = kAudioFormatFlagIsSignedInteger | kAudioFormatFlagIsPacked;
monoStreamFormat.mBitsPerChannel = 16;
monoStreamFormat.mChannelsPerFrame = 1;
monoStreamFormat.mFramesPerPacket = 1;
monoStreamFormat.mBytesPerPacket = 2;
monoStreamFormat.mBytesPerFrame = 2;
应该设置采样率,然后从AVAudioSession
获取。
在连接到 3D 混音器输入的音频单元的输出上设置此格式。这可能是一个 AUConverter Unit...
但请注意,这尚未针对
【讨论】:
【参考方案3】:3d 混音器需要单声道输入。
http://lists.apple.com/archives/coreaudio-api/2010/Sep/msg00144.html
【讨论】:
嘿,当为其输入元素设置流格式时,它给我一个错误***.com/questions/7722158/…?有什么想法吗?以上是关于使用 iOS 3d 混合器的主要内容,如果未能解决你的问题,请参考以下文章