Ios 使用MPMoviePlayerController播放youtube视频
很长一段时间以来,我一直在使用html字符串通过UIWebView播放youtube视频,问题是我想在playbackstate更改后获得通知。我决定创建一个MPMoviePlayerController并通过它播放youtube视频,但似乎无法实现。我在viewdidload中使用以下代码:Ios 使用MPMoviePlayerController播放youtube视频,ios,objective-c,youtube,Ios,Objective C,Youtube,很长一段时间以来,我一直在使用html字符串通过UIWebView播放youtube视频,问题是我想在playbackstate更改后获得通知。我决定创建一个MPMoviePlayerController并通过它播放youtube视频,但似乎无法实现。我在viewdidload中使用以下代码: NSString *urlAddress = @"http://www.youtube.com/watch?v=m01MYOpbdIk"; NSURL *url = [NSURL URLWithStrin
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;
}
利用定制 它是
mpmovieplayervewcontroller
的子类
LBYouTubeView只是一个小视图,可以在MPMoviePlayerController
中显示YouTube视频。您甚至可以在高质量和标准质量流之间进行选择
它只是加载YouTube移动网站的HTML代码,并在脚本标记中查找数据
LBYouTubeView没有使用UIWebView,这使得它看起来更快更干净。对我来说,这个库工作得非常好 在此调用方法之后
[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;
}
播放youtube视频的官方方式:1)使用youtube中的嵌入标记的UIWebView,即UIWebView的内容。2)使用youtube ios播放器帮助程序[谷歌官方方式] 不幸的是,无法使用MPMoviePlayerController直接播放youtube视频,因为youtube不公开视频文件的直接链接 有一个通过MPMoviePlayerController运行youtube视频的库,但它们反对youtube的TOC。因此,最简单的方法是使用youtube ios播放器助手 如果youtube ios player helper pod无法工作,您可以将YTPlayer.h/.m和assets文件夹添加到项目中,并编写一个带有#import“YTPlayerView.h”的桥接头和您可以继续执行的rest过程
这对我来说绝对有效 我不明白。我使用了示例应用程序。我所做的只是将标准的youtube链接(URLWithString:@“quality:LBYouTubeVideoQualityLarge];)替换为我自己的链接,这给我带来了错误…?太好了。谢谢:)您是否已在使用此库的Appstore上成功提交了应用程序?有人提到“这未经youtube的ToC批准”。使用风险自负。”
-(void)urlLoadintoPlayer
{
moviePlayer.contentURL = _urlToLoad;
}