1

我的 AUGraph 设置相当简单,多通道混音器连接到 I/O 单元。通过回调函数访问播放,一切正常。

我正在尝试切换到 3D 混音器而不是多通道混音器。所以我将参数从 kAudioUnitSubType_MultiChannelMixer 切换到 kAudioUnitSubType_AU3DMixerEmbedded 并保持所有其他设置相同。

结果是一种高亢的呜呜声,似乎开始听起来像什么,然后变成了呜呜声。我已经检查了每个 3D 混合器单元的参数并将它们设置为默认值,但没有任何变化。不过,打开和关闭 k3DMixerParam_Enable 参数确实可以使播放静音和取消静音。

我可能错过了什么设置?或者知道在哪里可以找到工作 3d 混合器的示例?

4

3 回答 3

3

正如已经指出的,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)
                      );
于 2012-04-19T14:04:45.903 回答
1

正如所有答案已经提到的: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单元......

但是请注意,这尚未针对 < iOS 8 进行测试。

于 2015-03-05T15:00:30.593 回答
0

3d 混音器需要单声道输入。

http://lists.apple.com/archives/coreaudio-api/2010/Sep/msg00144.html

于 2011-06-21T16:29:22.760 回答