Playing youtube video with MPMoviePlayerController
我长期以来一直在使用 html 字符串通过 UIWebView 播放 youtube 视频,问题是我想获得改变播放状态的通知。我决定创建一个 MPMoviePlayerController 并通过它播放 youtube 视频,但似乎无法让它工作。我在 viewdidload 中使用以下代码:
1
2 3 4 5 6 7 8 9 |
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]; |
给我这个错误:
1
2 3 4 5 |
_itemFailedToPlayToEnd: {
kind = 1; new = 2; old = 0; } |
对我来说,这个库确实很好用! https://github.com/hellozimi/HCYoutubeParser
1
2 3 4 5 6 7 |
moviePlayer = [[MPMoviePlayerController alloc] init];
moviePlayer.shouldAutoplay = YES; moviePlayer.fullscreen = YES; moviePlayer.repeatMode = MPMovieRepeatModeNone; moviePlayer.controlStyle = MPMovieControlStyleDefault; moviePlayer.movieSourceType = MPMovieSourceTypeFile; moviePlayer.scalingMode = MPMovieScalingModeAspectFit; |
在这个调用方法之后。
1
|
[self callYouTubeURL:[NSString stringWithFormat:@"http://www.youtube.com/embed/%@",_urlcode]];
|
在此方法中解析 youtube 链接。
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
– (void)callYouTubeURL:(NSString *)urlLink { NSURL *url = [NSURL URLWithString:urlLink]; if (!error) { [HCYoutubeParser h264videosWithYoutubeURL:url completeBlock:^(NSDictionary *videoDictionary, NSError *error) { NSDictionary *qualities = videoDictionary; NSString *URLString = nil; [self urlLoadintoPlayer]; }]; |
在此加载后,将新解析的 url 加载到播放器中。
1
2 3 4 |
–(void)urlLoadintoPlayer
{ moviePlayer.contentURL = _urlToLoad; } |
使用自定义的 LBYouTubePlayerViewController
它是
的子类
LBYouTubeView 只是一个能够在
它只是加载 YouTube 移动网站的 HTML 代码并在 script 标签中查找数据。
LBYouTubeView 不使用 UIWebView,这使它更快,看起来更干净。
播放 youtube 视频的官方方式:1) UIWebView 使用 Youtube 的 embed 标签 UIWebView//’s content.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” 编写一个桥头文件,然后rest您可以在 https://github.com/youtube/youtube-ios-player-helper 上遵循的程序
这绝对对我有用!
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/tech/268601.html