看似随机文件损坏使用AVAudioRecorder(有时文件无法播放) – iOS

看似随机文件损坏使用AVAudioRecorder(有时文件无法播放) – iOS,第1张

概述在我正在开发的应用程序中,我或多或少地打砖墙.在应用程序中,您可以输入在标准表视图中列出所有本地保存的音频文件的视图.从这里你可以点击他们来播放它们,或者点击下面的记录按钮进行新的录制,然后自动将其保存到应用程序沙盒中. 现在所有这一切实际上是完美的,大部分时间.我可以坐下来做录音并且播放他们.我可以坐下来测试这个45岁左右,没有任何问题.随后突然间,我会碰到一个非常奇怪的问题.问题是,录音机全部 在我正在开发的应用程序中,我或多或少地打砖墙.在应用程序中,您可以输入在标准表视图中列出所有本地保存的音频文件的视图.从这里你可以点击他们来播放它们,或者点击下面的记录按钮进行新的录制,然后自动将其保存到应用程序沙盒中.

现在所有这一切实际上是完美的,大部分时间.我可以坐下来做录音并且播放他们.我可以坐下来测试这个45岁左右,没有任何问题.随后突然间,我会碰到一个非常奇怪的问题.问题是,录音机全部突然开始,除了损坏的文件,无法播放,正是4096字节的大小,无论你多长时间录音.

我以完全标准的方式使用AVAudioRecorder,设置如下:

// Specific settings for the audio recordingNSDictionary *recordSettings = [NSDictionary dictionaryWithObjectsAndKeys:    [NSNumber numberWithInt:AVAudioQualityMin],AVEncoderAudioQualityKey,[NSNumber numberWithInt:8],AVEncoderBitRateKey,[NSNumber numberWithInt: 2],AVNumberOfChannelsKey,[NSNumber numberWithfloat:22000.0],AVSampleRateKey,nil];NSError *error = nil;audioRecorder = [[AVAudioRecorder alloc]    initWithURL:contentURL    settings:recordSettings    error:&error];audioRecorder.delegate = self;

我开始录制如下:

if (!isRecording) {    isRecording = YES;    [audioRecorder record];    // Start the timer    recordTiming = [NSDate date];    timeCheck = [NSTimer        scheduledTimerWithTimeInterval:1.0f        target:self        selector:@selector(timeCheck)        userInfo:nil        repeats:YES];}

然后停止它:

if (isRecording) {    [audioRecorder stop];    // Stop the timer    [timeCheck invalIDate];}

我不知道可能会导致这个问题发生.到目前为止,我已经尝试了几乎所有的事情.我已经检查以确保记录器对象被正确回收(所以您有一个新的实例为每个现在录制),并且旧引用被释放等等,以确保它与干扰对象无关,但没有什么解决.

有没有人有什么可能会导致文件损坏的问题?

解决方法 注意:由于OP已经停用了好几天了,我猜这个问题应该回答,以供公众的将来参考,所以我发布了这个答案.

AVAudioSession必须在开始录制之前获得.

AVAudioSession *audioSession = [AVAudioSession sharedInstance];NSError *err = nil;[audioSession setcategory :AVAudioSessioncategoryPlayAndRecord error:&err];if(err){   NSLog(@"audioSession: %@ %d %@",[err domain],[err code],[[err userInfo] description]);   return;}err = nil;[audioSession setActive:YES error:&err];if(err){   NSLog(@"audioSession: %@ %d %@",[[err userInfo] description]);   return;}

参考:https://stackoverflow.com/a/9706731/188331

总结

以上是内存溢出为你收集整理的看似随机文件损坏使用AVAudioRecorder(有时文件无法播放) – iOS全部内容,希望文章能够帮你解决看似随机文件损坏使用AVAudioRecorder(有时文件无法播放) – iOS所遇到的程序开发问题。

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

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

原文地址: http://outofmemory.cn/web/1111995.html

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

发表评论

登录后才能评论

评论列表(0条)

保存