我有一个应用程序可以监控背景音频电平而不录制到文件中。我使用写入 /dev/null 的技巧来完成此操作。
此代码适用于装有 iOS 6 的 iPhone 3GS、装有 iOS 6 和 iOS 7 的 iPhone 4,以及装有 iOS 7 和 iPhone Retina(4 英寸 64 位)的模拟器。
然而,当我在真正的 iPhone 5s 上试用它时,录音机似乎捕捉到了一会儿音频,然后就无声无息地死掉了。
这是代码:
// Inititalize the audio
NSURL *url = [NSURL fileURLWithPath:@"/dev/null"];
NSDictionary *settings = [NSDictionary dictionaryWithObjectsAndKeys:
[NSNumber numberWithFloat: 44100.0], AVSampleRateKey,
[NSNumber numberWithInt: kAudioFormatAppleLossless], AVFormatIDKey,
[NSNumber numberWithInt: 1], AVNumberOfChannelsKey,
[NSNumber numberWithInt: AVAudioQualityMax], AVEncoderAudioQualityKey,
nil];
NSError *error;
recorder = [[AVAudioRecorder alloc] initWithURL:url settings:settings error:&error];
if (recorder) {
[recorder prepareToRecord];
recorder.meteringEnabled = YES;
[recorder record];
levelTimer = [NSTimer scheduledTimerWithTimeInterval: 0.03 target: self selector: @selector(levelTimerCallback:) userInfo: nil repeats: YES];
// peakLevelTimer = [NSTimer scheduledTimerWithTimeInterval: 2.0 target: self selector: @selector(peakLevelTimerCallback:) userInfo: nil repeats: YES];
} else {
NSLog(@"There was an error setting up the recorder.");
NSLog([error description]);
}
任何想法可能会发生什么?
有人可以提出解决方法吗?写入真实文件是可行的,但我不想仅仅为了监视音频而占用设备上的任何空间。有没有办法写入一个刚刚蒸发到空气中的小文件缓冲区?有效地实现我自己的/dev/null?