2015-07-29 2 views
0

Я пытаюсь использовать glimpse для записи UIView. Он успешно сохраняет его в папке документов приложения, однако мне также нужно его сохранить в рулоне камеры пользователя. Это не спасение от ролика камеры. Мне прислано предупреждение, позволяющее приложению получить доступ к моему рулону камеры, но это не сохраняется ни в одном альбоме.UISaveVideoAtPathToSavedPhotosАльбом не сохраняет видео в ролике камеры

Я попытался приличное количество кода в пределах от этого:

[self.glimpse startRecordingView:self.view onCompletion:^(NSURL *fileOuputURL) { 
     NSLog(@"DONE WITH OUTPUT: %@", fileOuputURL.absoluteString); 


     UISaveVideoAtPathToSavedPhotosAlbum(fileOuputURL.absoluteString,nil,nil,nil); 





    }]; 

Для этого:

ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init]; 
     [library writeVideoAtPathToSavedPhotosAlbum:fileOuputURL 
            completionBlock:^(NSURL *assetURL, NSError *error){NSLog(@"hello");}]; 

начинает печать журналов, но не сохраняет видео на камеру рулон.

Если у кого-то есть идеи, это не работает, пожалуйста, дайте мне знать! Спасибо!

+0

проверить, можно ли сохранить это видео, если ([библиотека videoAtPathIsCompatibleWithSavedPhotosAlbum: contentURL]) { } –

+0

@ ThilinaCháminHewagama кажется видео не совместимо я получаю это 'NSLocalizedDescription = запрошенный URL не найден на этом сервере.} 'Как я могу это исправить? – Jack

ответ

10

Проблема связана с видеодорожкой. Укажите относительный путь от URL-адреса.

if UIVideoAtPathIsCompatibleWithSavedPhotosAlbum(fileUrl.relativePath) { 
    UISaveVideoAtPathToSavedPhotosAlbum(fileUrl.relativePath, nil, nil, nil) 
} 

Если вы добавили этот UIVideoAtPathIsCompatibleWithSavedPhotosAlbum проверки компилятор показал бы вам вопрос с файлом.

3

Проблема - это ваш путь к видео, указанный как URL-адрес. Поэтому вам нужно проверить, что ваш URL-адрес Pathable является компактным для сохранения в видео или нет, и если вы хотите сохранить видео в камаровом рулоне, просто передайте URL-адрес и следуйте этому коду :

-(void)saveVideo:(NSString *)videoData withCallBack:(void(^)(id))callBack{ 
library = [[ALAssetsLibrary alloc] init]; 
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ 

    NSData *yourVideoData=[NSData dataWithContentsOfURL:[NSURL URLWithString:videoData]]; 
    if (yourVideoData) { 
     NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
     NSString *documentsDirectory = [paths objectAtIndex:0]; 

     NSString *filePath = [NSString stringWithFormat:@"%@/%@", documentsDirectory,@"video.mp4"]; 


       if([yourVideoData writeToFile:filePath atomically:YES]) 
       { 
        NSURL *capturedVideoURL = [NSURL URLWithString:filePath]; 
        //Here you can check video is compactible to store in gallary or not 
        if ([library videoAtPathIsCompatibleWithSavedPhotosAlbum:capturedVideoURL]) { 
         // request to save video in photo roll. 
         [library writeVideoAtPathToSavedPhotosAlbum:capturedVideoURL completionBlock:^(NSURL *assetURL, NSError *error) { 
          if (error) { 
           callBack(@"error while saving video"); 
           NSLog(@"error while saving video"); 
          } else{ 

            callBack(@"Video has been saved in to album successfully !!!"); 

        } 
         }]; 
        } 
       } 

    } 
}); 


} 
Смежные вопросы