在应用程序中保存Youtubevideo到iPhone

在应用程序中播放Youtubevideo很容易,周围有很多文件。

有两个问题:

  1. 在closuresYoutube播放器之后,如果用户想再次播放它,则必须等待在线stream传输
  2. 不能离线播放(在家中加载video观看路上)

有没有人有代码来:

  1. 下载Youtubevideo到文档文件夹,并显示下载进度
  2. 通过从文件夹中加载文件播放下载的video(即使没有连接到互联网)

从YouTube下载video:

  1. 通过YouTube API或任何其他方法获取要下载的URL。
  2. 创build一个NSOutputStream或NSFileHandle打开临时文件(在NSTemporaryDirectory()或您的文档目录中的临时名称的文件)。
  3. 设置你的进度条,以及你需要做的任何事情。
  4. 分配并启动NSURLConnection以从URL中获取文件。 当然,不要使用sendSynchronousRequest:returningResponse:error:
  5. connection:didReceiveResponse: delegate方法中,读出要下载的数据的长度以正确更新进度条。
  6. connection:didReceiveData: delegate方法中,将数据写入输出stream/文件句柄并根据需要更新进度栏。
  7. connectionDidFinishLoading:connection:didFailWithError: ,closures输出stream/文件句柄,并根据需要重命名或删除临时文件。

要播放它,只需使用NSURL的fileURLWithPath:在Documents目录中创build指向本地文件的URL,并像播放任何远程video一样播放该URL。

我使用这个项目的类: https : //github.com/larcus94/LBYouTubeView它适用于我。 我可以下载YouTubevideo。

我用这个代码:

 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); } }]; 

您可以使用上面的post中描述的技术来显示下载的进度。

这是我的例子: https : //github.com/comonitos/youtube_video

我使用PSYouTubeExtractor.h类彼得Steinberger它可以得到youtube的MP4videourl,比下载和查看不是一个问题

NSURLConnection + NSNotificationCenter + PSYouTubeExtractor + NSMutableData

检查这些项目 –

https://github.com/iosdeveloper/MyTube
https://github.com/pvinis/mytube

这些一定会帮助你!

我个人不知道如何下载YouTubevideo(代码太大,无法在这里回答)。

不过,这里有一个完整的YouTube下载示例。 这是一个开源的YouTube下载器,称为LoadTube: 这是一个链接到源代码 。

我会播放video,并找出临时文件的存储位置。 如果您可以访问它,请将其复制到某个文档文件夹以供离线查看。