9

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

4

5 回答 5

8

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

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"
  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>;

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

我希望这有帮助。

于 2013-10-24T09:55:49.573 回答
6

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

我遵循了本教程:嵌入视频的 YouTube 教程

我创建了一本字典。然后我将它添加到 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)

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

希望对某人有所帮助。

于 2015-11-25T15:20:44.630 回答
4

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

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

在此处输入图像描述

于 2013-02-12T06:44:25.650 回答
2

将视频包装在html5文件中并添加标签webkit-playsinline属性。<video>然后设置webView.allowsInlineMediaPlayback = YES;这对我来说很完美。

于 2013-11-15T03:41:20.037 回答
0

似乎仍然没有办法做到这一点MPMoviePlayerController,但使用 UIWebView 的最佳解决方法是YTPlayerYoutube 开源的。您可以在Github上获取源代码,然后您就可以按照本教程进行操作。

我只是按照那个教程做的,它工作得很好,而且是相当可定制的。全屏播放AVFullScreenViewController是系统标准,因此可以旋转以获得更好的全屏观看效果。

于 2014-12-03T14:58:06.310 回答