ios - 使用 YOUTUBE urls 如何在 ios 中播放视频播放器

标签 ios objective-c

<分区>

我希望能够点击表格 View 项目并播放视频。我正在尝试使用 MPMoviePlayerController 流式传输一些 YouTube 视频,但我遇到了一些问题。我正在使用 json 解析器从网络服务器检索数据。我的问题是,当用户点击 UITableViewCell 时,视频播放器会全屏打开,并且一直显示“正在加载...”并且视频不会加载,也不会报告任何错误在调试器中。

-(void)viewDidLoad

{

urlsArray=[NSMutableArray alloc]init];

}

-(void)loadData

{

url=[NSURL URLWithString:@"urls”];

NSMutableURLRequest *request=[[NSMutableURLRequest alloc]initWithURL:url];

[[NSURLConnection alloc]initWithRequest:request delegate:self];

[UIApplication sharedApplication].networkActivityIndicatorVisible=YES;

}

-(void)connectionDidFinishLoading:(NSURLConnection *)connection

{

[UIApplication sharedApplication].networkActivityIndicatorVisible=NO;

NSError *jsonError = nil;

id jsonObject = [NSJSONSerialization JSONObjectWithData:responseData options:kNilOptions error:&jsonError];

if ([jsonObject isKindOfClass:[NSArray class]])      

{

}

else if ([jsonObject isKindOfClass:[NSDictionary class]])

{

NSDictionary *jsonDictionary = (NSDictionary *)jsonObject;

NSArray *array=[[NSArray alloc]init];

array=[jsonDictionary objectForKey:@"video-urls"];        

dataDictionary=[array objectAtIndex:0];

NSLog(@"%@",dataDictionary);    

}

[urlsArray addObject:[dataDictionary objectForKey:@“Key1”]]; 

[urlsArray addObject:[dataDictionary objectForKey:@“Key2”]]; 

[urlsArray addObject:[dataDictionary objectForKey:@“Key3”]];

[urlsArray addObject:[dataDictionary objectForKey:@“Key4”]];

[urlsArray addObject:[dataDictionary objectForKey:@“Key6”]];       

NSLog(@"%@",urlsArray); 

} 


-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath

{

selectedIndex=indexPath.row;

NSLog(@"%@ %d",urlsArray,selectedIndex);

NSString *currentUrlsArr=[urlsArray objectAtIndex:indexPath.row];

NSLog(@"urlstring %@",currentUrlsArr);

NSString *youTubeString=[[NSString alloc]initWithFormat:@"https://www.youtube.com/watch?v="];

NSString *stringAppend=[youTubeString stringByAppendingString:currentUrlsArr];

stringAppend =[stringAppend stringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding];

NSURL *urlString=[NSURL URLWithString:stringAppend];

NSLog(@"%@",urlString);

moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL:urlString];

[self.view addSubview:moviePlayer.view];

moviePlayer.shouldAutoplay=YES;

[moviePlayer prepareToPlay];

moviePlayer.fullscreen = YES;

[moviePlayer play];

}

最佳答案

您可以使用 [LBYoutubeURLExtractor] ( https://github.com/larcus94/LBYouTubeView/blob/master/LBYouTubeView/LBYouTubeExtractor.h ) 播放 Youtube 视频。

下载此类并在您的 -(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 方法中使用以下代码:

LBYouTubeExtractor *extractor = [[LBYouTubeExtractor alloc] initWithURL: urlString quality:LBYouTubeVideoQualityLarge];
[extractor extractVideoURLWithCompletionBlock:^(NSURL *videoURL, NSError *error) {
        [appDelegate hideActivityIndicator];
        if(!error) {
            MPMoviePlayerController *moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL:videoURL];
           [self.view addSubview:moviePlayer.view];
           moviePlayer.shouldAutoplay=YES;
           [moviePlayer prepareToPlay];
           moviePlayer.fullscreen = YES;
           [moviePlayer play];
       }
}];

使用此方法可以直接在 MPMoviePlayerController 中播放给定的 videoURL

希望这对您有所帮助。

关于ios - 使用 YOUTUBE urls 如何在 ios 中播放视频播放器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23403589/

相关文章:

c# - 如何在没有 System.UnauthorizedAccessException 的情况下将文件从应用程序包复制到另一个目录?

ios - Nib 中的 IBOutlets 在 awakeFromNib 和 initWithCoder 上都是 nil——没有 subview

ios - cocoapods pods 项目build设置

iOS:在文档应用程序中下载并保存 PDF 文件

ios - 随机定时器间隔

ios - 如何在屏幕上已经有触摸的情况下激活 UIGestureRecognizer?

ios - 安排本地通知(无声)在后台 + swift ios 中执行自定义任务

ios - 自动布局与 Collection View 单元格表现得很奇怪

objective-c - 如何复制CGLayer

ios - 替换 UITextView 的部分属性文本