我一直在使用html字符串长时间通过UIWebView播放youtube视频,问题是我希望通过更改回放状态获取通知。我决定创建一个MPMoviePlayerController并通过它播放youtube视频,但似乎无法使其工作。我在viewdidload中使用以下代码:
NSString *urlAddress = @"http://www.youtube.com/watch?v=m01MYOpbdIk";
NSURL *url = [NSURL URLWithString:urlAddress];
CGFloat width = [UIScreen mainScreen].bounds.size.width;
CGFloat height = [UIScreen mainScreen].bounds.size.height;
movie = [[MPMoviePlayerController alloc] initWithContentURL:url];
movie.scalingMode=MPMovieScalingModeAspectFill;
movie.view.frame = CGRectMake(0.0, 0.0, width, height);
[self.view addSubview:movie.view];
[movie play];
给我这个错误:
_itemFailedToPlayToEnd: {
kind = 1;
new = 2;
old = 0;
}
答案 0 :(得分:4)
对我来说,这个图书馆确实完美无缺! https://github.com/hellozimi/HCYoutubeParser
moviePlayer = [[MPMoviePlayerController alloc] init];
moviePlayer.shouldAutoplay = YES;
moviePlayer.fullscreen = YES;
moviePlayer.repeatMode = MPMovieRepeatModeNone;
moviePlayer.controlStyle = MPMovieControlStyleDefault;
moviePlayer.movieSourceType = MPMovieSourceTypeFile;
moviePlayer.scalingMode = MPMovieScalingModeAspectFit;
此调用方法之后。
[self callYouTubeURL:[NSString stringWithFormat:@"http://www.youtube.com/embed/%@",_urlcode]];
在此方法中解析youtube链接。
- (void)callYouTubeURL:(NSString *)urlLink
{
NSURL *url = [NSURL URLWithString:urlLink];
actvity.hidden = NO;
[HCYoutubeParser thumbnailForYoutubeURL:url thumbnailSize:YouTubeThumbnailDefaultHighQuality completeBlock:^(UIImage *image, NSError *error) {
if (!error) {
[HCYoutubeParser h264videosWithYoutubeURL:url completeBlock:^(NSDictionary *videoDictionary, NSError *error) {
NSDictionary *qualities = videoDictionary;
NSString *URLString = nil;
if ([qualities objectForKey:@"small"] != nil) {
URLString = [qualities objectForKey:@"small"];
}
else if ([qualities objectForKey:@"live"] != nil) {
URLString = [qualities objectForKey:@"live"];
}
else {
[[[UIAlertView alloc] initWithTitle:@"Error" message:@"Couldn't find youtube video" delegate:nil cancelButtonTitle:@"Close" otherButtonTitles: nil] show];
return;
}
_urlToLoad = [NSURL URLWithString:URLString];
[self urlLoadintoPlayer];
}];
}
else {
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error" message:[error localizedDescription] delegate:nil cancelButtonTitle:@"Dismiss" otherButtonTitles:nil];
[alert show];
}
}];
}
此加载后,新解析url到播放器。
-(void)urlLoadintoPlayer
{
moviePlayer.contentURL = _urlToLoad;
}
答案 1 :(得分:2)
使用自定义 LBYouTubePlayerViewController
它是MPMoviePlayerViewController
。
LBYouTubeView 只是一个小视图,能够以MPMoviePlayerController
显示YouTube视频。您甚至可以选择高质量和标准质量的流。
它只会加载YouTube移动网站的HTML代码,并在脚本代码中查找数据。
LBYouTubeView 不使用UIWebView ,这使它更快,看起来更干净。
答案 2 :(得分:0)
播放youtube视频的官方方式:1)UIWebView使用来自Youtube的嵌入标签UIWebView的内容.2)使用youtube-ios-player-helper [Google官方方式]
不幸的是,没有办法用MPMoviePlayerController直接播放youtube视频,因为youtube没有公开直接链接到视频文件。
有通过MPMoviePlayerController运行youtube视频的库,但它们是针对youtube的TOC的。因此,最简单的方法是使用youtube-ios-player-helper。
如果youtube-ios-player-helper pod不起作用,您可以将YTPlayer.h / .m和assets文件夹添加到项目中,并使用#import“YTPlayerView.h”编写桥接头,然后您可以使用其他步骤关注https://github.com/youtube/youtube-ios-player-helper 这绝对适合我!