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

问题描述 投票:88回答:8

我正在尝试使用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];

我也尝试过以下网址的http://www.youtube.com/watch?v=HGd9qAfpZio

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

ios video streaming youtube mpmovieplayercontroller
8个回答
78
投票

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

不幸的是,没有办法用MPMoviePlayerController直接播放youtube视频,因为youtube没有公开直接链接到视频文件。


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

资源:

Just refer this link

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


23
投票

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

你可以查看源码并将其分叉here

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

希望这对任何帮助! 干杯


13
投票

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

LBYouTubeView


2
投票

要播放管视频,您需要在将网址传递到MPMoviePlayer之前提取网址。你不能直接玩它。

我的github repo有一个演示实现。

看到:

https://github.com/DpzAtMicRO/IOSYoutubePlayer

尝试一下,这样就可以直接在MPMoviePlayerlike上加载和播放youtube视频任何其他视频,也是非常好的方法。

编辑:确保在项目中使用之前完成Readme.md


1
投票

它就像将iframe的src元素用于新的嵌入代码并调用一样简单

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

0
投票

请检查以下链接。我认为它会对你有所帮助。

https://mobiletechfeast.blogspot.in/2014/08/youtube-player-for-ios.html


0
投票

有一种官方方式可以将Google视频嵌入到由Google提供的iOS应用程序中。

通过cocoapods安装库:pod“youtube-ios-player-helper”

import by:#import “YTPlayerView.h”使用UIView并将类设置为YTPlayerView或以编程方式创建YTPlayerView的对象。

加载视频:[self.playerView loadWithVideoId:@"M7lc1UVf-VE"];

还有playVideostopVideo方法。欲了解更多信息,请访问this Link

© www.soinside.com 2019 - 2024. All rights reserved.