Url 下载YouTube视频';行不通
我用一些格式的直接视频url解析了“url\u encoded\u fmt\u stream\u map=”条目,例如(已解码): 但我不能下载或查看它!VLC说:不能打开!Firefox仍然为空(白色窗口,没有错误消息)!是“url\u encoded\u fmt\u stream\u map=“right?”之后的url吗?在我的回答中,我描述了一种下载youtube视频的解决方案Url 下载YouTube视频';行不通,url,youtube,Url,Youtube,我用一些格式的直接视频url解析了“url\u encoded\u fmt\u stream\u map=”条目,例如(已解码): 但我不能下载或查看它!VLC说:不能打开!Firefox仍然为空(白色窗口,没有错误消息)!是“url\u encoded\u fmt\u stream\u map=“right?”之后的url吗?在我的回答中,我描述了一种下载youtube视频的解决方案 LBYouTubeExtractor *extractor = [[[LBYouTubeExtractor a
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);
}
}];
您可以使用上面文章中描述的技术显示下载的进度。
您可以用更适合您的方法替换dataWithContentsOfURL。我对此也很感兴趣。我尝试了这种方法,得到了同样的结果。是否有人能提供一个当前有效的下载Youtube视频的解决方案?您也可以先将视频从Youtube下载到本地存储中。看看这个,它真的很有帮助:那么我们是被允许直接下载视频还是违反tos?此外,由于某些原因,质量较低:(
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);
}
}];