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

Posted

技术标签:

【中文标题】在没有全屏的情况下在 UIWebView 中播放 Youtube 视频【英文标题】:Play Youtube video in a UIWebView without full screen 【发布时间】:2013-01-27 09:05:48 【问题描述】:

我想在我的应用中嵌入一个 Youtube 视频。但通常的技术是,我们在 UIWebView 中嵌入一个 youtube 视频,当用户点击时,它会自动在 MPMoviePlayerController 中启动。但这会全屏启动。如何在不全屏的情况下在 MPMoviePlayerController 中播放此 youtube 视频。我想把它显示在屏幕的一半。

【问题讨论】:

【参考方案1】:

有几种方法可以做到这一点。除了设置:

videoView.allowsInlineMediaPlayback = YES;

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

方法一

通知controls: 0

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

方法二

HTML 嵌入式 iFrame 代码(注意 &controls=0 和/或 &playsinline=1

<iframe
  id="ytplayer"
  type="text/html"
  
  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>;

您只需在playerVars 内添加&amp;playsinline=1(或playsinline:1javascript 案例中的下一个playerVars) 在这种情况下,用户仍然可以全屏播放,但播放器应该在您的视图边界正常启动。

我希望这会有所帮助。

【讨论】:

你有这方面的工作例子吗?这将是一个很大的帮助【参考方案2】:

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

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

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

来自 YouTube 教程:

替换loadWithVideoId: 调用此代码:

目标-C

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

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

斯威夫特 2.1:

   var playerVars = ["playsinline" : 1]

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

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

希望对某人有所帮助。

【讨论】:

是否违反了 Youtube api ToS? 没有。它不是。每个人都使用它。 @RoiMulia @Lukesivi 您的分享链接包含目标 c 中的代码。你能分享一些相同的代码链接吗?【参考方案3】:

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

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

【讨论】:

【参考方案4】:

将视频包装在html5文件中,并在&lt;video&gt;标签的属性中添加webkit-playsinline。然后设置webView.allowsInlineMediaPlayback = YES; 这对我来说非常适合。

【讨论】:

【参考方案5】:

似乎仍然没有办法使用MPMoviePlayerController 执行此操作,但使用 UIWebView 的最佳解决方法是 Youtube 开源的YTPlayer。您可以在Github 上获取源代码,然后您可以关注此tutorial。

我只是按照该教程进行操作,它运行良好,并且可定制。全屏在AVFullScreenViewController 中播放,这是一个系统标准,因此,它可以旋转以获得更好的全屏观看效果。

【讨论】:

以上是关于在没有全屏的情况下在 UIWebView 中播放 Youtube 视频的主要内容,如果未能解决你的问题,请参考以下文章

Trigger.io 中的内联视频播放

我可以在 UIWebView 内联(不是全屏)中播放 youtube 视频吗?

UIWebView 播放全屏 youtube 电影时如何隐藏 UIPopoverController?

怎么使chrome全屏的代码

如何强制在 UIWebView 中播放的视频在 iPad 上全屏显示?

在 swift 4 上单击 UIWebview 上的播放视频时出错