Сохранить видео Youtube для iPhone в приложении
Воспроизведение видео Youtube в приложении легко и хорошо документировано.
Есть две проблемы с этим:
- после закрытия проигрывателя Youtube, если пользователь хочет снова воспроизвести его, ему придется ждать онлайн-потоковой передачи.
- не может играть в автономном режиме (загружать видео дома, чтобы смотреть по дороге)
Есть ли у кого код:
- загрузите видео с YouTube в папку с документами и покажите ход загрузки.
- воспроизводит загруженное видео, загружая файл из папки с документами (что означает, даже если оно не подключено к Интернету).
Ответы
Ответ 1
Чтобы загрузить видео с YouTube:
- Получить URL-адрес для загрузки с помощью API YouTube или любого другого метода.
- Создайте NSOutputStream или NSFileHandle открыт в временном файле (в
NSTemporaryDirectory()
или файл с именем temp в папке "Документы" ).
- Настройте свой индикатор выполнения и все, что вам нужно сделать.
- Выделите и запустите NSURLConnection, чтобы извлечь файл из URL-адреса. Не используйте
sendSynchronousRequest:returningResponse:error:
, конечно.
- В методе делегата
connection:didReceiveResponse:
зачитайте длину загружаемых данных для правильного обновления индикатора выполнения.
- В методе делегата
connection:didReceiveData:
напишите данные в дескриптор выходного потока/файла и при необходимости обновите индикатор выполнения.
- В
connectionDidFinishLoading:
или connection:didFailWithError:
закройте дескриптор выходного потока/файла и переименуйте или удалите временный файл соответствующим образом.
Чтобы воспроизвести его, просто используйте NSURL fileURLWithPath:
, чтобы создать URL-адрес, указывающий на локальный файл в папке "Документы", и воспроизвести его так же, как и любое удаленное видео.
Ответ 2
Я использовал классы из этого проекта: https://github.com/larcus94/LBYouTubeView
Он отлично работает для меня.
Я могу загрузить видео с YouTube.
Я использовал этот код:
LBYouTubeExtractor *extractor = [[[LBYouTubeExtractor alloc] initWithURL:[NSURL URLWithString:[NSString stringWithFormat:(@"http://www.youtube.com/watch?v=%@"), self.videoID ]] quality:LBYouTubeVideoQualityLarge] autorelease];
[extractor extractVideoURLWithCompletionBlock:^(NSURL *videoURL, NSError *error) {
if(!error) {
NSLog(@"Did extract video URL using completion block: %@", videoURL);
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
NSData *data = [NSData dataWithContentsOfURL: videoURL];
NSString *pathToDocs = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSString *filename = [NSString stringWithFormat:(@"video_%@.mp4"), self.videoID ];
[data writeToFile:[pathTODocs stringByAppendingPathComponent:filename] atomically:YES];
NSLog(@"File %@ successfully saved", filename);
});
} else {
NSLog(@"Failed extracting video URL using block due to error:%@", error);
}
}];
Вы можете показать ход загрузки, используя технику, описанную в сообщениях выше.
Ответ 3
Вот мой пример: https://github.com/comonitos/youtube_video
Я использовал класс PSYouTubeExtractor.h от Peter Steinberger. Он может получить URL-адрес YouTube youtube mp4, а загрузка и просмотр не проблема.
NSURLConnection
+
NSNotificationCenter
+
PSYouTubeExtractor
+
NSMutableDatap >
Ответ 4
Я лично не знаю, как загружать видео youtube (и код слишком велик, чтобы вставить здесь ответ).
Однако здесь приведен полный пример загрузки youtube здесь.
Это загружающий загрузчик с открытым исходным кодом под названием LoadTube: здесь ссылка на исходный код.
Ответ 5
проверить эти проекты -
https://github.com/iosdeveloper/MyTube
https://github.com/pvinis/mytube
они определенно помогут вам!
Ответ 6
Я бы воспроизвел видео и выяснил, где хранится файл temp. Если вы можете получить к нему доступ, скопируйте его в папку с документами для автономного просмотра.