iOS 8 youtube 视频嵌入

Posted

技术标签:

【中文标题】iOS 8 youtube 视频嵌入【英文标题】:iOS 8 youtube video embed 【发布时间】:2014-11-10 18:34:07 【问题描述】:

我面临着我似乎无法理解的问题。

我的这段代码可以在 Xcode 5 和 ios 7 中完美运行:

- (void)viewDidLoad 
  [super viewDidLoad];
  // Do any additional setup after loading the view, typically from a nib.
  CGFloat width = self.view.frame.size.width;
  CGFloat height = self.view.frame.size.height;
  UIWebView *webview = [[UIWebView alloc] initWithFrame:CGRectMake(0, 0, width, height)];
  NSString* embedhtml = @"\
  <html><head><meta name=\"viewport\" content=\"width=device-width; initial-scale=1.0; user-scalable=0;\"/>\
  <style type=\"text/css\">\
    body \
    background-color: transparent;\
   color: black;\
  \
  </style>\
  </head><body style=\"margin:0;\">\
  <embed id=\"yt\" src=\"https://www.youtube.com/v/M7lc1UVf-VE?hd=1\" type=\"application/x-shockwave-flash\" \
  width=\"%0.0f\" height=\"%0.0f\"></embed>\
  </body></html>";
  NSString *html = [NSString stringWithFormat:embedHTML, width, height];
  [webview loadHTMLString:html baseURL:nil];
  [self.view addSubview:webview];

当我在 Xcode 6 中为 iOS 8 构建相同的代码时,视频会显示在 webview 中,但是太小了。

谁能解释这里发生了什么以及我如何克服这个问题?

【问题讨论】:

为什么不使用github.com/0xced/XCDYouTubeKit? 一个原因可能是,因为这应该是一个官方应用程序并且您链接到的页面声明:“警告:XCDYouTubeKit 违反了 YouTube 服务条款。”不过还是谢谢。 @berliner 除了第三方库之外,您找到解决此问题的方法了吗? @ViruMax 不,不幸的是我没有找到这种行为的解释。我最终使用 iframe 而不是嵌入代码。 @berliner 能否告诉我或粘贴您的代码,说明您是如何使用 iFrame 的? 【参考方案1】:

我遇到了同样的问题,我用这个解决方案解决了

https://developers.google.com/youtube/v3/guides/ios_youtube_helper

也在 YTPlayerView.m (~line: 610) 中尝试这个更改:

[playerParams setValue:[NSString stringWithFormat: @"%0.00f", self.frame.size.height] forKey:@"height"];
// [playerParams setValue:@"100%" forKey:@"height"];
[playerParams setValue:[NSString stringWithFormat: @"%0.00f", self.frame.size.width] forKey:@"width"];
// [playerParams setValue:@"100%" forKey:@"width"];

希望有帮助

【讨论】:

嗯,感谢您的提示,但实际上我更感兴趣的是导致我的代码现在失败的变化。我可以自己构建一个 iframe,但我更想了解为什么嵌入技术不再起作用,或者更准确地说,为什么我无法在 iOS 8 中再控制视频的大小。或者我如何控制它。 该播放器不能播放私密视频,但可以播放不公开视频。由于该库封装了现有的 iframe 播放器,因此播放器的行为应该与嵌入在移动浏览器网页中的播放器几乎相同。【参考方案2】:

我为此工作了一段时间,并想出了一个非常适合我的目的的解决方案。在我的情况下发生的事情是由于某种原因 iFrame 使用了一些需要丢弃的填充。

另外需要注意的是,如果您将 youtube.com 作为基本 URL,它将加载得更快。

在你的故事板中创建一个 UIWebView 并将@property 连接到它,然后参考下面。

    CGFloat height = self.webView.frame.size.height;
    CGFloat width = self.webView.frame.size.width;
    NSString *youTubeVideoCode = @"dQw4w9WgXcQ";
    NSString *embedHTML = @"<iframe width=\"%f\" height=\"%f\" src=\"http://www.youtube.com/embed/%@\" frameborder=\"0\" style=\"margin:-8px;padding:0;\" allowfullscreen></iframe>";
    NSString *html = [NSString stringWithFormat:embedHTML, width, height, youTubeVideoCode];
    self.webView.scrollView.bounces = NO;
    [self.webView loadHTMLString:html baseURL:[NSURL URLWithString:@"http://www.youtube.com"]];

【讨论】:

以上是关于iOS 8 youtube 视频嵌入的主要内容,如果未能解决你的问题,请参考以下文章

YouTube 嵌入式播放器在 iOS 8 上因 gpus_ReturnNotPermittedKillClient 而崩溃

测量在 iOS 中内联播放的嵌入式 YouTube 视频的音频电平

ionic 嵌入式 youtube 视频停止在 iOS 上播放

如何在 Phonegap ios 应用程序中嵌入 youtube 视频

Phonegap / Cordova Youtube 在 iOS 上嵌入视频不起作用

用于 youtube 嵌入式视频的 iOS 6.0+ 自动旋转