1

我从 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;
    }
};

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

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

诺沃卡因https://github.com/alexbw/novocaine

4

1 回答 1

4

这个问题在这里讨论: https ://github.com/alexbw/novocaine/issues/59

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

wself.audioManager.inputBlock = nil;

我通过在之后立即添加此行来使其工作:

[wself.fileWriter stop];

AudioFileWriter 的 stop 方法是私有的,所以也需要添加到 public 接口中。

于 2013-11-20T05:37:16.963 回答