0

ビデオを保存するアプリを作成しましたが、ユーザーが削除ボタンをクリックしたときにそのビデオを削除したいと考えています。動画撮影に使用AVFoundationしています。

私のアプリのカメラは、次のような出力 URL を提供します。

file://localhost/private/var/mobile/Applications/4B2E02E5-3EE2-493E-8ECF-4B1DA29B9387/tmp/output.mov

私はこれを試しましたが、うまくいきませんでした:

- (void) removeFile:(NSURL *)fileURL
{

    NSString *filePath = [fileURL path];
    NSFileManager *fileManager = [NSFileManager defaultManager];
    if ([fileManager fileExistsAtPath:filePath]) {
        NSLog(@"here it is : %@",fileURL);
        NSError *error;
        // Attempt to delete the file at filePath2
        if ([fileManager removeItemAtPath:filePath error:&error] != YES)
            NSLog(@"Unable to delete file: %@", [error localizedDescription]);

        // Show contents of Documents directory
        NSLog(@"Documents directory: %@",
              [fileManager contentsOfDirectoryAtPath:filePath error:&error]);
    }
}

編集

   - (IBAction)videoWillDelete:(id)sender {

        NSString *strPath =  [NSHomeDirectory() stringByAppendingPathComponent:@"output.mov"];

        NSLog(@"file is:%@",strPath);

        if ([[NSFileManager defaultManager] isDeletableFileAtPath:strPath]==YES) {
            NSLog(@"file is deletebale");
        }else {
            NSLog(@"file is not deletebale");
        }

        NSError *error;
        if ([[NSFileManager defaultManager] isDeletableFileAtPath:strPath]) {

            BOOL success = [[NSFileManager defaultManager] removeItemAtPath:strPath error:&error];

            if (!success) {
                NSLog(@"Error removing file at path: %@", error.localizedDescription);
            }
        }

    }

私のログファイルには次のものがあります:

2012-11-02 17:33:21.836 AVFoundationCam[1791:707] file is:/var/mobile/Applications/4B2E02E5-3EE2-493E-8ECF-4B1DA29B9387/output.mov

2012-11-02 17:33:21.838 AVFoundationCam[1791:707] file is not deletebale

この関数は、iPhone にデータを保存するために使用するものです。

else {  
        ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init];
        [library writeVideoAtPathToSavedPhotosAlbum:outputFileURL
                                    completionBlock:^(NSURL *assetURL, NSError *error) {

                                        if (error) {
                                            if ([[self delegate] respondsToSelector:@selector(captureManager:didFailWithError:)]) {
                                                [[self delegate] captureManager:self didFailWithError:error];
                                            }                                           
                                        }

                                        if ([[UIDevice currentDevice] isMultitaskingSupported]) {
                                            [[UIApplication sharedApplication] endBackgroundTask:[self backgroundRecordingID]];
                                        }

                                        if ([[self delegate] respondsToSelector:@selector(captureManagerRecordingFinished:)]) {
                                            [[self delegate] captureManagerRecordingFinished:self];
                                        }
                                    }];
        //[library release];
    }
}
4

3 に答える 3

0

チェック[NSHomeDirectory() stringByAppendingPathComponent:@"tmp/output.mov"];は、のoutputFileURLと同じです。[library writeVideoAtPathToSavedPhotosAlbum:outputFileURL completionBlock:^(NSURL *assetURL, NSError *error) {

于 2012-11-02T13:17:39.813 に答える
0

U はDocument Directory path次のように取得できます。

NSString *strPath =  [NSHomeDirectory() stringByAppendingPathComponent:@"Documents"];

次のようにアイテムを削除します。

NSError *error;
if ([fileManager fileExistsAtPath:path]) {
  if ([[NSFileManager defaultManager] isDeletableFileAtPath:strPath]) {
    BOOL success = [[NSFileManager defaultManager] removeItemAtPath:strPath error:&error];
    if (!success) {
        NSLog(@"Error removing file at path: %@", error.localizedDescription);
    }
    else
    {
        NSLog(@"File removed  at path: %@", error.localizedDescription);
    }
  }
  else
{
    NSLog(@"file not exists"); 
}
于 2012-11-02T11:41:01.320 に答える