在没有全屏的UIWebView中播放Youtube视频

时间:2013-02-12 05:36:19

标签: ios objective-c youtube

我想在我的应用中看到Youtube视频。但通常的技术是,我们在UIWebView中嵌入了一个YouTube视频,当用户点击时,它会自动在MPMoviePlayerController中启动。但这将全屏启动。如何在MPMoviePlayerController中播放此YouTube视频而无需全屏播放。我想在屏幕的一半显示这个。

5 个答案:

答案 0 :(得分:6)

有几种方法可以做到这一点。

除了设置

videoView.allowsInlineMediaPlayback = YES;

最简单和最脏的方法是禁用这样的控件:

<强> A)

v1) Javascript代码(注意controls:0):

...

player = new YT.Player('player', 
    { width:'100%', height:'50%', videoId:'[your video id]', 
        playerVars: { 
            controls:0, 
            rel:0, modestbranding:1, html5:1, showinfo:0 
        }

...

v2) HTML嵌入iFrame代码(请注意&controls=0和/或&playsinline=1):

...

<iframe id="ytplayer" type="text/html" width="100%"  src="http://www.youtube.com/[your_video_id]?autoplay=1&controls=0&playsinline=1&modestbranding=1&rel=0&showinfo=0&autohide=1&html5=1" webkit-playsinline frameborder="0"></iframe>

...

B)

您只需在&playsinline=1内的Javascript案例中添加playsinline:1(或playerVars) 此案例用户仍然可以全屏显示,但播放器应该在视图的边框中正常启动。

我希望这会有所帮助。

答案 1 :(得分:5)

我正在使用UIView定义为YTPlayerView来播放视频。

我遵循了本教程:YouTube Tutorial to Embed Video

我创建了一本字典。然后我将它添加到videoId定义(我正在播放的视频)。

来自YouTube教程:

  

使用以下代码替换loadWithVideoId:来电:

<强>目的-C

 NSDictionary *playerVars = @{
   @"playsinline" : @YES,
 };

[self.playerView loadWithVideoId:@"M7lc1UVf-VE" playerVars:playerVars];

Swift 2.1:

   var playerVars = ["playsinline" : 1]

   videoId.loadWithVideoId(["videoId"], playerVars: playerVars)

这将在尝试播放视频时禁用全屏,并且还允许用户在需要时全屏显示。

希望能有所帮助。

答案 2 :(得分:2)

您设置 allowinlinemediaplayback 。但这个功能在iPad上。在iPhone中不适用。如果您尝试在iPhone上使用uiwebview播放视频,它将以全屏模式播放。

http://developer.apple.com/library/ios/#documentation/uikit/reference/UIWebView_Class/Reference/Reference.html

enter image description here

答案 3 :(得分:2)

将视频换入html5文件,并在webkit-playsinline标记的属性中添加<video>。然后设置webView.allowsInlineMediaPlayback = YES;这对我来说非常适合。

答案 4 :(得分:0)

使用MPMoviePlayerController似乎仍无法实现此目的,但使用UIWebView的最佳解决方法是由Youtube开源的YTPlayer。您可以在Github上获取来源,然后您可以关注此tutorial

我只是按照该教程进行操作,效果非常好并且可以自定义。全屏播放AVFullScreenViewController这是一个系统标准,因此,它可以旋转,以便更好地全屏观看。