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のドキュメントによると次のように発生します。

...特定の種類の一時的な中断(電話の着信やSMSメッセージなど)の場合、またはユーザーがアプリケーションを終了してバックグラウンド状態への移行を開始した場合。

コードは次のようになります。

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

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