使用MPMoviePlayerController而不是UIWebView播放YouTube视频

jmu*_*phy 89 youtube video streaming mpmovieplayercontroller ios

我正在尝试使用MPMoviePlayerController传输一些youTube视频,但我遇到了一些问题.我正在使用的代码非常简单,我可以通过将URL传递给initWithContentURL来播放.m4v视频.当我启动电影播放器​​时,播放器出现但在大约20秒后消失.当我在模拟器中尝试它时,我得到一个警告视图,说明服务器配置不正确.我是否需要通过URL传递来自谷歌的特定类型的视频源?

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

[moviePlayer play];
Run Code Online (Sandbox Code Playgroud)

我还尝试了以下网址 http://www.youtube.com/watch?v=HGd9qAfpZio

我也看到了参数&format = 1并尝试将其添加到两个字符串的末尾,但没有运气.

Bry*_*nry 78

在您自己的应用程序中播放YouTube视频的唯一方法是UIWebView使用Youtube中的embed标签创建一个您想要作为UIWebView's内容播放的电影.UIWebView将检测到嵌入的对象是Youtube链接,并且Web视图的内容将是视频的youtube预览.当您的用户点击预览时,视频将显示在MPMoviePlayerController中.这是Muxecoid提供的链接(如何在应用程序中播放youtube视频)中描述的技术,这是(据我所知)在应用程序中播放YouTube视频的唯一方法.您仍然可以通过传递youtube URL来启动Youtube应用程序-[UIApplication openURL:],但当然这会关闭您自己的应用程序,这通常是不受欢迎的.

不幸的是,MPMoviePlayerController由于youtube没有公开直接链接到视频文件,因此无法直接播放youtube视频.

  • 这不是唯一的方法.你可以从Youtube获得mp4文件.我在[AirPlayer Python Project](https://github.com/hellozimi/AirPlayer)中这样做,它可以让你在AppleTV上播放youtube视频.我将移植它并在我当前的iOS项目中使用它并在它准备就绪时在此处发布代码. (7认同)
  • 不幸的是,禁止使用直接链接.第II/10节.在https://developers.google.com/youtube/terms中:"除了使用YouTube播放器或其他明确授权的视频播放器之外,您的API客户端不会以任何方式访问任何YouTube视听内容的任何部分通过YouTube;" (7认同)

小智 26

如果您使用的是代码:

- (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];  
  }
Run Code Online (Sandbox Code Playgroud)

资源:

请参阅此链接

确保在设备上而不是在模拟器上进行测试.由于模拟器将始终显示带蓝框的问号(它没有快速播放器).


hel*_*imi 23

正如我在上面的评论中所写,我必须在我正在进行的项目中这样做.我已经解决了这个问题,并在github上提交了代码.

您可以检查源并在此处进行分叉.

它基本上需要一个youtube网址,并获取所有iOS兼容的视频网址.

希望这对任何帮助!
干杯

  • 是允许的吗? (3认同)

TPo*_*hel 13

我偶然发现了能够在其中放置YouTube视频的人MPMoviePlayerController.现在看来确实可行.

LBYouTubeView