Воспроизведение видео на YouTube с помощью MPMoviePlayerController вместо UIWebView

Я пытаюсь передать некоторые видео youTube с помощью MPMoviePlayerController, но у меня возникают некоторые проблемы. Код, который я использую, довольно прост, и я могу воспроизводить видео .m4v, передавая URL-адрес initWithContentURL. Когда я запускаю проигрыватель, игрок появляется, но просто уходит примерно через 20 секунд. Когда я пытаюсь в симуляторе, я получаю предупреждение, в котором говорится, что сервер настроен неправильно. Есть ли аргумент, который мне нужно передать с URL-адресом, чтобы получить определенный тип видеопотока из Google?

NSURL *videoURL = [NSURL URLWithString:@"http://www.youtube.com/v/HGd9qAfpZio&hl=en_US&fs=1&"];
MPMoviePlayerController *moviePlayer;
moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL:videoURL];

[moviePlayer play];

Я также пробовал использовать следующий URL-адрес http://www.youtube.com/watch?v=HGd9qAfpZio

Я также видел аргумент & format = 1 и пытался добавить это в конец обеих строк, но не повезло.

Ответ 1

Единственный способ воспроизведения видео в YouTube в своем приложении - создать UIWebView с тегом embed из Youtube для фильма, который вы хотите воспроизвести в качестве контента UIWebView's. UIWebView обнаружит, что внедренный объект является ссылкой Youtube, а содержимое веб-представления будет предварительным просмотром youtube для видео. Когда пользователь нажимает предварительный просмотр, видео будет отображаться в MPMoviePlayerController. Это метод, описанный в ссылке, который Muxecoid предоставил (как воспроизводить видео в YouTube в приложении), и это (насколько я знаю ) единственный способ иметь видеоролик YouTube в приложении. Вы все еще можете запустить приложение Youtube, передав URL-адрес youtube в -[UIApplication openURL:], но, конечно, это закрывает ваше собственное приложение, которое часто нежелательно.

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

Ответ 2

Если вы используете Код:

- (void)embedYouTube:(NSString*)url frame:(CGRect)frame {  
     NSString* embedHTML = @"\ 
        <html><head>\ 
     <style type=\"text/css\">\ 
     body {\ 
     background-color: transparent;\ 
     color: white;\ 
    }\ 
   </style>\ 
    </head><body style=\"margin:0\">\ 
       <embed id=\"yt\" src=\"%@\" type=\"application/x-shockwave-flash\" \ 
    width=\"%0.0f\" height=\"%0.0f\"></embed>\ 
       </body></html>";  
   NSString* html = [NSString stringWithFormat:embedHTML, url, frame.size.width, frame.size.height];  
   if(videoView == nil) {  
      videoView = [[UIWebView alloc] initWithFrame:frame];  
     [self.view addSubview:videoView];  
    }  
    [videoView loadHTMLString:html baseURL:nil];  
  }

Источник:

Просто перейдите по этой ссылке

Убедитесь, что вы протестировали его на устройстве, а не на симуляторе. Поскольку симулятор всегда будет отображать вопросительный знак с синим полем (у него нет оперативного проигрывателя).

Ответ 3

Как я писал выше в своем комментарии, мне пришлось сделать это в проекте, над которым я работал. Я решил эту проблему и представил код в github.

Вы можете проверить источник и сделать его здесь.

В основном он берет URL-адрес youtube и получает все совместимые с iOS видеоролики.

Надеюсь, что это поможет! Приветствия

Ответ 4

Я просто наткнулся на кого-то, кто смог разместить видео YouTube внутри MPMoviePlayerController. Теперь это возможно.

LBYouTubeView

Ответ 5

Чтобы воспроизвести видеоролики с трубами, вам нужно извлечь URL-адрес, прежде чем передать URL-адрес в MPMoviePlayer. Вы не можете воспроизвести его напрямую.

В моем github-репо есть демонстрационная реализация этого.

См:

https://github.com/DpzAtMicRO/IOSYoutubePlayer

Попробуйте, это позволяет загружать и воспроизводить видео с YouTube прямо в MPMoviePlayer, как и любое другое видео, и это тоже очень хороший подход.

РЕДАКТИРОВАТЬ: Прежде чем использовать это в своем проекте, убедитесь, что вы хорошо читаете Readme.md

Ответ 6

Это так же просто, как взять элемент src iframe для нового кода вставки и вызвать

[self.webView loadRequest:[NSURLRequest requestWithURL:self.url]];