相关疑难解决方法(0)

如何录制混音器单元输出产生的声音(iOS Core Audio&Audio Graph)

我正在尝试录制混音器单元输出产生的声音.

目前,我的代码基于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)

iphone core-audio audio-recording audiounit ios

14
推荐指数
1
解决办法
9806
查看次数

将远程I/0输出写入和编码到文件 - Core Audio

我正在使用音频单元对音乐录制应用进行编码,我遇到了一些问题,让我生成的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)

iphone core-audio

7
推荐指数
1
解决办法
2304
查看次数

标签 统计

core-audio ×2

iphone ×2

audio-recording ×1

audiounit ×1

ios ×1