此代码适用于iOS 6的iPhone 3GS,iOS 6和iOS 7的iPhone 4,以及iOS 7和iPhone Retina(4英寸64位)的模拟器.
然而,当我在真正的iPhone 5s上试用时,录音机似乎会暂时捕捉音频,然后默默地死掉.
这是代码:
// Inititalize the audioNSURL *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?
解决方法 在测试我的iOS 7应用程序时遇到了同样的问题.我通过创建一个初始文件来解决缺少/ dev / null的问题,然后在录制开始后删除了几秒钟.录音仍然继续适用于我的应用程序,并且没有存储数据文件.
- (voID)startRecording{ // New recording path. Nsstring *recorderfilePath = [Nsstring stringWithFormat:@"%@/%@.caf",[NSHomeDirectory() stringByAppendingPathComponent:@"documents"],@"cache"]; NSURL *url = [NSURL fileURLWithPath:recorderfilePath]; AVAudioRecorder recorder = [[ AVAudioRecorder alloc] initWithURL:url settings:recordSetting error:&err]; if([recorder preparetoRecord]) { [recorder record]; NSTimer deletefileTimer = [NSTimer scheduledTimerWithTimeInterval:15 target:self selector:@selector(removeRecordingfile) userInfo:nil repeats:NO]; }}- (voID)removeRecordingfile{ // Remove the data file from the recording. Nsstring *recorderfilePath = [Nsstring stringWithFormat:@"%@/%@.caf",@"cache"]; NSfileManager *fileManager = [NSfileManager defaultManager]; NSError *error = nil; BOol success = [fileManager removeItemAtPath:recorderfilePath error:&error]; if(success) { NSLog(@"Deleted recording file"); } else { NSLog(@"Could not delete file -:%@ ",[error localizedDescription]); }}总结
以上是内存溢出为你收集整理的ios7 – 使用iOS 7在iPhone 5s上写入/ dev / null时,AVAudioRecorder停止工作全部内容,希望文章能够帮你解决ios7 – 使用iOS 7在iPhone 5s上写入/ dev / null时,AVAudioRecorder停止工作所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)