1

按下主页按钮时,如何安全地停止 AVFramework 上的视频录制?

我希望我的应用程序像本机相机应用程序一样工作:当您在录制过程中按下主页按钮时,它会停止录制过程,然后进入后台模式。

在我的应用程序委托上,我打电话[[videoController captureManager] stopRecording];recordingDidFinishToOutputFileURL我收到一个错误,上面写着:

停止使用录音设备的任何其他操作,然后重试。

4

2 回答 2

2

尝试恢复录制的视频...

    - (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.
                    }
                }
            }
        }
    }
于 2012-11-27T08:44:39.243 回答
2

我建议在您的应用程序委托的applicationWillResignActive:方法中调用停止您的视频录制。当您的应用程序从活动状态变为非活动状态时会触发此方法,根据UIApplicationDelegate 文档,这种情况会发生:

...对于某些类型的临时中断(例如来电或短信)或当用户退出应用程序并开始转换到后台状态时。

代码看起来像这样:

- (void)applicationWillResignActive:(UIApplication *)application
{
    [[videoController captureManager] stopRecording];

    // Do anything else before app becomes inactive
}
于 2012-10-25T11:27:53.560 回答