1

AVFoundation を使用してビデオをキャプチャしています。ここにたどり着くまで、すべてが私のアプリでうまくいっているようです:

- (void)captureOutput:(AVCaptureFileOutput *)captureOutput
didFinishRecordingToOutputFileAtURL:(NSURL *)outputFileURL
  fromConnections:(NSArray *)connections
            error:(NSError *)error
{

NSLog(@"didFinishRecordingToOutputFileAtURL - enter");

BOOL RecordedSuccessfully = YES;
if ([error code] != noErr)
{
    // A problem occurred: Find out if the recording was successful.
    id value = [[error userInfo] objectForKey:AVErrorRecordingSuccessfullyFinishedKey];
    if (value)
    {
        RecordedSuccessfully = [value boolValue];
    }
}
if (RecordedSuccessfully)
{
    //----- RECORDED SUCESSFULLY -----
    NSLog(@"didFinishRecordingToOutputFileAtURL - success");
    ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init];
    if ([library videoAtPathIsCompatibleWithSavedPhotosAlbum:outputFileURL])
    {
        [library writeVideoAtPathToSavedPhotosAlbum:outputFileURL
                                    completionBlock:^(NSURL *assetURL, NSError *error)
         {
             if (error)
             {

             }
         }];
    }

    [library release];      

}

}

デバイスで実行すると、「didFinishRecordingToOutputFileAtURL - 成功」メッセージが表示され、クラッシュして次のエラーが発生します。

ビデオ /private/var/mobile/Applications/EDC62CED-3710-45B2-A658-A2FE9238F517/tmp/output.mov を保存した写真アルバムに保存できません: エラー Domain=NSOSStatusErrorDomain Code=-12950 "ムービーを再生できませんでした。" UserInfo=0xe6749b0 {NSLocalizedDescription=動画を再生できませんでした。}

これに関する多くの情報をどこにも見つけることができず、何が起こっているのかよくわかりません。

一時的な出力 URL を含むコードは次のとおりです。

NSString *outputPath = [[NSString alloc] initWithFormat:@"%@%@", NSTemporaryDirectory(), @"output.mov"];
NSURL *outputURL = [[NSURL alloc] initFileURLWithPath:outputPath];
NSFileManager *fileManager = [NSFileManager defaultManager];
if ([fileManager fileExistsAtPath:outputPath])
{
    NSError *error;
    if ([fileManager removeItemAtPath:outputPath error:&error] == NO)
    {
        //Error - handle if requried
    }
}
[outputPath release];
//Start recording
[movieFileOutput startRecordingToOutputFileURL:outputURL recordingDelegate:self];

[outputURL release];

保存後に outputURL を別の場所に解放しようとしましたが、それは役に立たなかったので、それだけではないと思います。

4

1 に答える 1

0

私はこれを理解しました。私はばかで、実際にビデオ入力をキャプチャセッションに接続しなかったという事実を見落としていました。おっと。

于 2012-07-15T21:48:53.557 に答える