2014-01-17 3 views
2

Я использую html-строку в течение длительного времени для воспроизведения видео с YouTube через UIWebView, проблема в том, что я хочу получать уведомления с изменением состояния воспроизведения. Я решил создать MPMoviePlayerController и воспроизвести видео с YouTube, но, похоже, он не работает. Я использую следующий код в viewdidload:Воспроизведение youtube видео с MPMoviePlayerController

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; 
} 

ответ

2

Make обычая LBYouTubePlayerViewController

Это подкласс MPMoviePlayerViewController.

LBYouTubeView - это лишь небольшое представление, которое может отображать видео на YouTube в MPMoviePlayerController. У вас даже есть выбор между высококачественным и стандартным потоком качества.

Он просто загружает HTML-код мобильного веб-сайта YouTube и ищет данные в теге скрипта.

LBYouTubeView не использует UIWebView, что делает его быстрее и выглядит более чистым.

+0

Я не понимаю. я использовал образец приложения, все, что я сделал, заменяет стандартную ссылку на YouTube (URLWithString: @ "http://www.youtube.com/watch?v=1fTIhC1WSew&list=FLEYfH4kbq85W_CiOTuSjf8w&feature=mh_lolz"] качество: LBYouTubeVideoQualityLarge];) с моим собственным, и это дает мне ошибку ...? – user3195388

+0

@Ramshad, я не могу удалить игрока на Click of Done Button .... –

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; 
} 
+0

Отлично :) :) – Rushabh

+0

Отлично.Спасибо :) Вы успешно представили приложение на Appstore, которое использует эту библиотеку? Упоминается, что «это не одобрено ToC YouTube. Используйте на свой страх и риск». – iMemon

0

Официальный способ играть YouTube видео: 1) UIWebView с вставлять тег из Youtube content.2 в UIWebView в) Использование YouTube-КСН-игрок-помощник [Google официальный путь]

К сожалению, там нет способ напрямую воспроизводить видео с YouTube с помощью MPMoviePlayerController, потому что youtube не предоставляет прямые ссылки на видеофайлы.

Есть библиотека, которая запускает видео YouTube с помощью MPMoviePlayerController, но они против TOC youtube. Следовательно, самый простой способ - использовать для youtube-ios-player-helper.

В случае, если вы не используете утилиту youtube-ios-player-helper, вы можете добавить папку YTPlayer.h/.m и активов в свой проект и написать заголовок моста с #import «YTPlayerView.h» и выполнить процедуру останова может следовать по https://github.com/youtube/youtube-ios-player-helper Это определенно сработало для меня!

Смежные вопросы