ALAssetsLibraryWriteVideoCompletionBlock возвращает неопределенные значения

ALAssetsLibraryWriteVideoCompletionBlock возвращает неопределенные значения. Если assetURL равно nil, тогда ошибка должна быть не равна nil, то есть возвратить мне некоторое описание ошибки.

См. Документацию по железу здесь .

Когда я записываю небольшое видео, ALAssetsLibraryWriteVideoCompletionBlock возвращает хорошее значение assetURL, но когда я записываю длинное видео 3 или 4 Гб, returnURL возвращают нуль и возвращают ошибку. Видео записано в файле tmp, потому что я вижу это видео во временной папке в своем приложении. Кажется, что структура IOS пытается сделать копию этого временного файла на фотоальбом, а iPhone не хватает памяти для копирования этого временного файла в фотоальбом и возврата пути к этому файлу (assetURL).

Это ошибка в системе iOS? Если да, есть ли способ исправить это?

UPDATE: мои файлы имеют размер менее 4 ГБ. благодаря

ОБНОВЛЕНИЕ с исходным кодом:

  -(void)recorder:(AVCamRecorder *)recorder recordingDidFinishToOutputFileURL:(NSURL *)outputFileURL error:(NSError *)error { if ([[self recorder] recordsAudio] && ![[self recorder] recordsVideo]) { // If the file was created on a device that doesn't support video recording, it can't be saved to the assets // library. Instead, save it in the app's Documents directory, whence it can be copied from the device via // iTunes file sharing. [self copyFileToDocuments:outputFileURL]; if ([[UIDevice currentDevice] isMultitaskingSupported]) { [[UIApplication sharedApplication] endBackgroundTask:[self backgroundRecordingID]]; } if ([[self delegate] respondsToSelector:@selector(captureManagerRecordingFinished:)]) { [[self delegate] captureManagerRecordingFinished:self]; } } 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 (assetURL!=nil) { if ([[self delegate] respondsToSelector:@selector(captureManagerRecordingFinished:)]) { [[self delegate] captureManagerRecordingFinished:self]; } } else { NSLog(@"Video is not saved"); NSString *alertMsg = [NSString stringWithFormat:@"Impossible to copy video to photo album"]; UIAlertView *alert = [[UIAlertView alloc] init]; [alert setTitle:@"info"]; [alert setMessage:alertMsg]; [alert setDelegate:self]; [alert addButtonWithTitle:@"Accept"]; [alert show]; } }]; } } 

2 Solutions collect form web for “ALAssetsLibraryWriteVideoCompletionBlock возвращает неопределенные значения”

У меня почти такая же проблема: просто я пытаюсь сохранить фотографии, а не фильмы; но все же assetURL – NULL. Вот мой код:

  - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info { ALAssetsLibrary *library = [[ALAssetsLibrary alloc]init]; [library writeImageToSavedPhotosAlbum:(__bridge CGImageRef)([info objectForKey:UIImagePickerControllerOriginalImage]) orientation:ALAssetOrientationUp completionBlock:^(NSURL *assetURL, NSError *error) { if(error == nil) { _myImageUrl = [NSString stringWithFormat:@"%@",assetURL]; NSLog(@"%@",assetURL); } else NSLog(@"%@",error); }]; [picker dismissViewControllerAnimated:YES completion:nil]; } 

Итак, я думаю, эта проблема не связана с размером файла.

Я делаю разные тесты, и я могу сохранять видео с более чем 2 ГБ. В этом случае я удаляю много файлов на моем iPhone, пока у меня не будет 7Gb, а затем я сохранил видео с 3,2 ГБ (3,8 ГБ бесплатно) и сохранил в фотогалерее. Затем я сохранил другое видео с 2Gb, и оно не сохранилось в фотогалерее. Что это значит?. Ну, когда вы сохраняете временное видео, вам нужно хотя бы одно и то же или больше свободного места, чем видео, которое вы пытаетесь скопировать в фотогалерею.

Проблема здесь в том, что инфраструктура IOS7 не возвращает никакой ошибки с его функцией writeVideoAtPathToSavedPhotosAlbum, в этом случае она должна возвращать ALAssetsLibraryWriteDiskSpaceError = -3305. Возможно, в предыдущей версии IOS-структуры это работает … но в IOS7 нет.

Кстати, я открываю билет в репортере жуков. Если они скажут мне что-то другое, я опубликую его.

Спасибо всем парням.

ADD: FYI, я сохраняю видеофайл с более чем 4Gb (4.6Gb) в IOS 7.0.3

  • RTMP-поток на iOS
  • повторное видео с использованием UIImagePickerController
  • Наложение видео в режиме QuickTime на ios
  • Получение миниатюры для обрезанного видео в быстром
  • Добавить текущую метку на видео iOS
  • Как перекодировать видео в формат 16: 9 и изменять битрейт (и, возможно, FPS)?
  • Как вставить видео Youtube в мое приложение?
  • UIImagePickerController: странный результат сжатия видео
  • AVPlayerLayer не показывает видео AVPlayer?
  • загружать или передавать видео на Youtube из моего приложения SDK для iOS
  • Как получить кнопку для отображения различного видео в соответствии со строкой, в которой она нажата?
  • Interesting Posts

    Получите шаги в фоновом режиме с iOS 7

    Название проекта / приложения Xcode с пробелом – структура не найдена

    Обнаруживать, когда нажата кнопка «назад в приложение»

    iOS Facebook SDK – Открытие ссылки на профиль пользователей работает в Safari, но не если у пользователя есть приложение Facebook, установленное на их телефоне

    iOS 7 – Строка состояния перекрывает представление

    Как получить ориентацию по умолчанию LandscapeLeft в iOS5?

    Установить индикатор выполнения для загрузки NSData

    Устаревшая компоновка ячеек?

    Возврат покупки iOS в приложении – инициируется разработчиком, а не конечным пользователем

    ios – ошибка при использовании потоков и основных данных (цель-с)

    iOS 7 При повороте в панели вкладок правая сторона обзора не доступна

    Потоковое видео в реальном времени с ios

    Как удалить черный цвет в ios во время навигации по экрану?

    можно установить пользовательский значок аннотации FileAttachment в Adobe Reader

    Как перемещать маркер вместе с перемещением Карты Google в iOS?

    PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.