ios7 – 使用iOS 7在iPhone 5s上写入 devnull时,AVAudioRecorder停止工作

ios7 – 使用iOS 7在iPhone 5s上写入 devnull时,AVAudioRecorder停止工作,第1张

概述我有一个应用程序,可以监控背景音频级别而无需录制到文件.我使用写入/ dev / null的技巧来实现这一目标. 此代码适用于iOS 6的iPhone 3GS,iOS 6和iOS 7的iPhone 4,以及iOS 7和iPhone Retina(4英寸64位)的模拟器. 然而,当我在真正的iPhone 5s上试用时,录音机似乎会暂时捕捉音频,然后默默地死掉. 这是代码: // Inititaliz 我有一个应用程序,可以监控背景音频级别而无需录制到文件.我使用写入/ dev / null的技巧来实现这一目标.

此代码适用于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停止工作所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1057240.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存