Загрузка видео из HTML + UIWebView
В моем новом приложении мне нужно загружать видео с разных веб-сайтов, скажем, это приложение для загрузки видео. Для этого я планирую поиск html для.mp4 и.Flv url, а затем пытаюсь загрузить видео. Есть много приложений, которые делают то же самое
http://itunes.apple.com/in/app/video-downloader-super-lite/id481701140?mt=8
Что я спрашиваю, как мы можем скачать видео? Любой код или ссылка или что-то. как работает это приложение? Любая Помощь будет действительно ценить.
Что мне нужно, так это когда вы открываете страницу в UIWebview. Скажем, вы открываете "www.youtube.com" и выбираете видео для воспроизведения, а затем запрашивает загрузку. Для загрузки мне нужен URL (встроенный URL-адрес, URL-адрес Flv, URL-адрес MPV), поэтому я могу сделать это, чтобы функционировать. Мне нужно знать об этом URL
2 ответа
Если вы можете использовать библиотеку AFNetworking, это довольно просто. Вы можете сделать HTTP-запрос и использовать его outputStream
свойство, чтобы загрузить файл на ваше устройство. Скажем, вы подключили кнопку загрузки к функции downloadVideoFromURL:withName:
- (void)downloadVideoFromURL:(NSURL*)url withName:(NSString*)videoName
{
//filepath to your app's documents directory
NSString *appDocPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSString *videosPath = [appDocPath stringByAppendingPathComponent:@"Videos"];
NSString *filePath = [videosPath stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.mp4", videoName]];
//check to make sure video hasn't been downloaded already
if ([[NSFileManager defaultManager] fileExistsAtPath:filePath])
{
//file was already downloaded
}
//video wasn't downloaded, so continue
else
{
//enable the network activity indicator
[AFNetworkActivityIndicatorManager sharedManager].enabled = YES;
NSURLRequest *urlRequest = [NSURLRequest requestWithURL:url];
AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:urlRequest];
//create a temporary filepath while downloading
NSString *tmpPath = [videosPath stringByAppendingPathComponent:[NSString stringWithFormat:@"%@-tmp.mp4", videoName]];
//the outputStream property is the key to downloading the file
operation.outputStream = [NSOutputStream outputStreamToFileAtPath:tmpPath append:NO];
//if operation is completed successfully, do following
[operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {
//rename the downloaded video to its proper name
[[NSFileManager defaultManager] moveItemAtPath:tmpPath toPath:filePath error:nil];
//disable network activity indicator
[AFNetworkActivityIndicatorManager sharedManager].enabled = NO;
//optionally, post a notification to anyone listening that the download was successful
[[NSNotificationCenter defaultCenter] postNotificationName:@"DownloadedVideo" object:nil];
//if the operation fails, do the following:
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"error: %@", error);
//delete the downloaded file (it is probably partially downloaded or corrupt)
[[NSFileManager defaultManager] removeItemAtPath:tmpPath error:nil];
//disable network activity indicator
[AFNetworkActivityIndicatorManager sharedManager].enabled = NO;
}];
//start the operation
[operation start];
}
}
Если вы действительно хотите пойти на взлом, вы получите частную библиотеку Apple, "webkit", если вы попытаетесь найти подпредставления UIWebview, это может помочь вам, я никогда не пробовал, но вы можете проверить с помощью этой логики.