2016-04-07 121 views
0

玩我想下载或文档目录保存YouTube视频然后发挥该视频使用MPMoviePlayerViewController。但我不知道为什么我的代码不工作。我无法保存或下载文件的目录视频和文档目录

我用下面这段代码:

prgrma mark-下载或保存

-(IBAction)onclick_download:(id)sender 
{ 
     dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ 
     NSLog(@"Downloading Started"); 
     NSString *urlToDownload = @"youtubeurl"; 
     NSURL *url = [NSURL URLWithString:urlToDownload]; 
     NSData *urlData = [NSData dataWithContentsOfURL:url]; 
     if (urlData) 
     { 
      NSArray  *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
      NSString *documentsDirectory = [paths objectAtIndex:0]; 

      filePath = [NSString stringWithFormat:@"%@/%@", documentsDirectory,@"thefile.mp4"]; 

      //saving is done on main thread 
      dispatch_async(dispatch_get_main_queue(), ^{ 
       [urlData writeToFile:filePath atomically:YES]; 
       NSLog(@"File Saved !"); 
      }); 
     } 

    }); 

} 

编译mark-从当你的链接,你所提供的文档目录

-(IBAction)onclick_playvideolocally:(id)sender 
{ 
    [self playvideolocally]; 
} 
-(void)playvideolocally 
{ 
    NSURL *videoUrl; 
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString *documentsDirectory = [paths objectAtIndex:0]; 

    NSArray *filePathsArray = [[NSFileManager defaultManager] subpathsOfDirectoryAtPath:documentsDirectory error:nil]; 
    NSLog(@"files array %@", filePathsArray); 

    NSString *fullpath; 

    for (NSString *apath in filePathsArray) 
    { 
     fullpath = [documentsDirectory stringByAppendingPathComponent:apath]; 
     videoUrl =[NSURL fileURLWithPath:fullpath]; 
    } 
    MPMoviePlayerViewController *videoPlayerView = [[MPMoviePlayerViewController alloc] initWithContentURL:videoUrl]; 
    [self presentMoviePlayerViewControllerAnimated:videoPlayerView]; 
    [videoPlayerView.moviePlayer play]; 
} 
+0

的的MPMoviePlayerController类在IOS 9.正式弃用(MPMoviePlayerViewController类也正式弃用。)为了在IOS 9播放视频内容和更高版本,而是使用AVPictureInPictureController或AVPlayerViewController类从AVKit框架,或来自WebKit的WKWebView类。 –

+0

您无法直接从网址下载YouTube视频,也不能从app store购买safe.apple不允许从第三方下载视频 –

+0

@SunnyShah:那么从URL下载管状视频的其他选项是什么? –

回答

2

播放视频url为youtube所以它不会被下载或保存在本地

使用此为y outube

我使用了这个项目中的类: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); 
    } 
}]; 
+0

我得到一个错误'由于错误,使用块提取视频URL失败:错误域= LBYouTubeExtractorErrorDomain代码= 2“无法找到流URL。 UserInfo = {NSLocalizedDescription =找不到流的网址} ' –

+0

其已知问题dw .. 请通过https://github.com/rg3/youtube-dl/issues/427 –

+0

它可以在模拟器中工作? –

相关问题