我正在尝试录制混音器单元输出产生的声音.
目前,我的代码基于Apple MixerHost iOS应用程序演示:混音器节点连接到音频图形上的远程IO节点.
我尝试在混音器输出上的远程IO节点输入上设置输入回调.
我做错了什么,但我找不到错误.
这是下面的代码.这是在多通道混音器单元设置之后完成的:
UInt32 flag = 1;
// Enable IO for playback
result = AudioUnitSetProperty(iOUnit, kAudioOutputUnitProperty_EnableIO, kAudioUnitScope_Output,
0, // Output bus
&flag,
sizeof(flag));
if (noErr != result) {[self printErrorMessage: @"AudioUnitSetProperty EnableIO" withStatus: result]; return;}
/* can't do that because *** AudioUnitSetProperty EnableIO error: -1073752493 00000000
result = AudioUnitSetProperty(iOUnit, kAudioOutputUnitProperty_EnableIO, kAudioUnitScope_Input,
0, // Output bus
&flag,
sizeof(flag));
if (noErr != result) {[self printErrorMessage: @"AudioUnitSetProperty EnableIO" withStatus: result]; …Run Code Online (Sandbox Code Playgroud) 我正在使用音频单元对音乐录制应用进行编码,我遇到了一些问题,让我生成的M4A文件播放除了不那么棒的嗡嗡声之外的任何其他内容.我已经使用这些SO 资源 作为 参考,我已经尝试了一切来排除故障.
我有一个AUGraph2节点:一个多通道混音器和一个远程I/O. 我的调音台上有两个输入回调:一个用于从麦克风输入输入,另一个用于从音频文件中提取.混频器输出连接到I/O单元上输出范围的输入元件.这可以实现同步I/O.
为了捕获输出,我添加了一个回调和两个方法:
回调
static OSStatus recordAndSaveCallback (void * inRefCon,
AudioUnitRenderActionFlags * ioActionFlags,
const AudioTimeStamp * inTimeStamp,
UInt32 inBusNumber,
UInt32 inNumberFrames,
AudioBufferList * ioData)
{
Mixer* THIS = (__bridge Mixer*)inRefCon;
AudioBufferList bufferList;
OSStatus status;
status = AudioUnitRender(THIS.ioUnit,
ioActionFlags,
inTimeStamp,
0,
inNumberFrames,
&bufferList);
SInt16 samples[inNumberFrames]; // A large enough size to not have to worry about buffer overrun
memset (&samples, 0, sizeof (samples));
bufferList.mNumberBuffers = 1;
bufferList.mBuffers[0].mData = samples;
bufferList.mBuffers[0].mNumberChannels = 1;
bufferList.mBuffers[0].mDataByteSize = …Run Code Online (Sandbox Code Playgroud)