Как удалить сжатое видео после загрузки в iOS?

#ios #uiimagepickercontroller

#iOS #uiimagepickercontroller

Вопрос:

В моем приложении, когда я выбираю видео и после его сжатия система создает два файла.Когда я выбираю другой, он снова дублирует его. Это увеличивает объем моей памяти. Теперь я хотел удалить сжатую версию файла из системы. Может кто-нибудь, пожалуйста, помочь мне в этом?

Это мой делегат imagePickerController

 #pragma mark - UIImagePicker delegate


- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {

    NSString *mediaType = [info objectForKey: UIImagePickerControllerMediaType];

    if (CFStringCompare ((__bridge CFStringRef) mediaType, kUTTypeMovie, 0) == kCFCompareEqualTo) {
        NSURL *videoUrl=(NSURL*)[info objectForKey:UIImagePickerControllerMediaURL];
        NSString *moviePath = [videoUrl path];

        if (UIVideoAtPathIsCompatibleWithSavedPhotosAlbum (moviePath)) {
            UISaveVideoAtPathToSavedPhotosAlbum (moviePath, nil, nil, nil);

            NSURL *videoURL = [info objectForKey:UIImagePickerControllerMediaURL];
            isVideoShooted =NO;
            [self navigateToPostAdViewWithURL:videoURL];


        }
    }

    [self dismissViewControllerAnimated:YES completion:^{
    }];
}
  

И видео, которое я получаю,

file:///Users/webwerks/Library/Developer/CoreSimulator/Devices/17B6B1EB-8015-4747-81B0-6FB07F713471/data/Containers/Data/Application/18A3DB9A-78CE-4761-A4EB-B35CBFCEF1C5/tmp/trim.A8DC422C-137F-4FF9-878A-E175CE4DDF8F.MOV

И когда я загружаю сжатое видео, я удаляю файл по этому пути, используя следующий код

   (void)clearTmpDirectory
{
    NSArray* tmpDirectory = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:NSTemporaryDirectory() error:NULL];
    for (NSString *file in tmpDirectory) {
        if ([[file pathExtension]isEqualToString:@"MOV"])
            [[NSFileManager defaultManager] removeItemAtPath:[NSString stringWithFormat:@"%@%@", NSTemporaryDirectory(), file] error:NULL];

    }
}
  

этот код работает нормально, он удаляет видео из пути, но все же я получаю еще один видеофайл в приложении «Фотографии». Это непрерывно генерирует файл каждый раз, когда я загружаю видео. Теперь я хотел не создавать дубликат файла на фотографиях, иначе он должен быть удален после загрузки.

Комментарии:

1. Можете ли вы добавить сюда свой код для выбора и сжатия видео? Итак, мы можем выяснить, как вам помочь.

2. На самом деле, я реализовал UIImagePickerControllerDelegate, и по умолчанию он сжимает видеофайл и сохраняет его

3. Нет, по умолчанию UIImagePickerController не сжимает видеофайл developer.apple.com/reference/uikit/… . Вам лучше указать свой код в своем вопросе, поэтому я не просто предполагаю. (вы можете нажать редактировать, чтобы добавить свой код в вопрос).

4. Я обновил вопрос с помощью кода

Ответ №1:

Вам не нужно использовать UISaveVideoAtPathToSavedPhotosAlbum . Это приведет к дублированию видеофайла.

 if (UIVideoAtPathIsCompatibleWithSavedPhotosAlbum (moviePath)) {
    NSURL *videoURL = [info objectForKey:UIImagePickerControllerMediaURL];
    isVideoShooted =NO;
    [self navigateToPostAdViewWithURL:videoURL];
}