Novocaine:保存的音频文件不起作用

时间:2013-07-21 02:24:27

标签: ios core-audio novocaine

我从Novocaine的示例项目输出m4a文件。但我无法在iTunes中打开该文件。该文件可能已损坏。

NSArray *pathComponents = [NSArray arrayWithObjects:
                               [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject], 
                               @"My Recording.m4a", 
                               nil];
NSURL *outputFileURL = [NSURL fileURLWithPathComponents:pathComponents];
NSLog(@"URL: %@", outputFileURL);

self.fileWriter = [[AudioFileWriter alloc]
                   initWithAudioFileURL:outputFileURL 
                   samplingRate:self.audioManager.samplingRate
                   numChannels:self.audioManager.numInputChannels];


__block int counter = 0;
self.audioManager.inputBlock = ^(float *data, UInt32 numFrames, UInt32 numChannels) {
    [wself.fileWriter writeNewAudio:data numFrames:numFrames numChannels:numChannels];
    counter += 1;
    if (counter > 800) { // roughly 5 seconds of audio
        wself.audioManager.inputBlock = nil;
    }
};

我没有更改代码,只是删除了注释。

如果您知道可能的解决方案或建议,我想知道您是否可以与我分享。

Novocaine https://github.com/alexbw/novocaine

1 个答案:

答案 0 :(得分:4)

此问题在此处讨论: https://github.com/alexbw/novocaine/issues/59

原始代码使用此行终止录制(在处理程序块内):

wself.audioManager.inputBlock = nil;

我通过以下方式立即添加此行来实现:

[wself.fileWriter stop];

AudioFileWriter的stop方法是私有的,因此还需要将其添加到公共接口。