iOS: скачать видео с URL и сохранить в галерее......?

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

BOOL compatible = UIVideoAtPathIsCompatibleWithSavedPhotosAlbum([videoURL path]);
        // save
        NSLog(@"BOOL compatible....%hhd",compatible);

        if (compatible){
            UISaveVideoAtPathToSavedPhotosAlbum([videoURL path], nil, nil, nil);
            NSLog(@"SAVED!!!! %@",[videoURL path]);
        }else
        {
            NSLog(@"INCOMPATIBLE...");
        }

при загрузке видео с ошибкой: https://api.quickblox.com/blobs/4185382/download невозможно сохранить в альбом сохраненных фотографий: Ошибка Domain=NSURLErrorDomain Code=-1100 "Запрошенный URL-адрес не найден на этом сервере." UserInfo=0x7f9c13ccb130 {NSUnderlyingError=0x7f9c13cc3aa0 "Операция не может быть завершена. Нет такого файла или каталога",

2 ответа

Решение

Используйте этот код. Надеюсь, он будет работать правильно.

    -(void)DownloadVideo
{
//download the file in a seperate thread.
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
NSLog(@"Downloading Started");
NSString *urlToDownload = @"http://www.somewhere.com/thefile.mp4";
NSURL  *url = [NSURL URLWithString:urlToDownload];
NSData *urlData = [NSData dataWithContentsOfURL:url];
if ( urlData )
    {
    NSArray       *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString  *documentsDirectory = [paths objectAtIndex:0];

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

    //saving is done on main thread
    dispatch_async(dispatch_get_main_queue(), ^{
        [urlData writeToFile:filePath atomically:YES];
        NSLog(@"File Saved !");
    });
    }

});
}

Из документации Apple я думаю, что UIVideoAtPathIsCompatibleWithSavedPhotosAlbum работает только с локальными файлами, а не с удаленными. То же самое будет верно для UISaveVideoAtPathToSavedPhotosAlbum,

Вам нужно будет сначала загрузить файл на свое устройство, прежде чем вы сможете использовать UIVideoAtPathIsCompatibleWithSavedPhotosAlbum, Я бы порекомендовал использовать что-то вроде AFNetworking для этого.

Другие вопросы по тегам