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

我用一些格式的直接视频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 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);
    }
}];