按下主页按钮时,如何安全地停止 AVFramework 上的视频录制?
我希望我的应用程序像本机相机应用程序一样工作:当您在录制过程中按下主页按钮时,它会停止录制过程,然后进入后台模式。
在我的应用程序委托上,我打电话[[videoController captureManager] stopRecording];
但recordingDidFinishToOutputFileURL
我收到一个错误,上面写着:
停止使用录音设备的任何其他操作,然后重试。
按下主页按钮时,如何安全地停止 AVFramework 上的视频录制?
我希望我的应用程序像本机相机应用程序一样工作:当您在录制过程中按下主页按钮时,它会停止录制过程,然后进入后台模式。
在我的应用程序委托上,我打电话[[videoController captureManager] stopRecording];
但recordingDidFinishToOutputFileURL
我收到一个错误,上面写着:
停止使用录音设备的任何其他操作,然后重试。
尝试恢复录制的视频...
- (void)captureOutput:(AVCaptureFileOutput *)captureOutput didFinishRecordingToOutputFileAtURL:(NSURL *)outputFileURL fromConnections:(NSArray *)connections error:(NSError *)error
{
BOOL recordedSuccessfully = NO;
if ([error code] != noErr)
{
if(outputFileURL)
{
NSFileManager* manager = [NSFileManager defaultManager];
NSString* path = outputFileURL.path;
if([manager fileExistsAtPath:path])
{
NSError *attributesError = nil;
NSDictionary *fileAttributes = [manager attributesOfItemAtPath:path error:&attributesError];
NSNumber *fileSizeNumber = [fileAttributes objectForKey:NSFileSize];
long long fileSize = [fileSizeNumber longLongValue];
if(fileSize > 0)
{
NSLog(@"Recording finished with error, but trying to save whatever recorded");
// save whatever we have to camera roll.
}
}
}
}
}
我建议在您的应用程序委托的applicationWillResignActive:
方法中调用停止您的视频录制。当您的应用程序从活动状态变为非活动状态时会触发此方法,根据UIApplicationDelegate 文档,这种情况会发生:
...对于某些类型的临时中断(例如来电或短信)或当用户退出应用程序并开始转换到后台状态时。
代码看起来像这样:
- (void)applicationWillResignActive:(UIApplication *)application
{
[[videoController captureManager] stopRecording];
// Do anything else before app becomes inactive
}