嵌入 Youtube 视频显示空白屏幕

Posted

技术标签:

【中文标题】嵌入 Youtube 视频显示空白屏幕【英文标题】:Embedding Youtube video shows blank screen 【发布时间】:2012-02-15 16:02:47 【问题描述】:

从事实出发:

    我正在使用流行的代码 sn-p 创建一个对象并将其加载到 web 视图中。 我正在使用设备。 我已经测试了通过添加标签来加载webview,一切都很好。

问题是嵌入的对象显示为空白且显然不可点击,我已经搜索了几个小时,但我似乎无法理解为什么会发生这种情况。我什至创建了一个 html 文档并用我的计算机浏览器对其进行了测试,缩略图显示正常,但我无法在我的 webview 中显示它,请帮忙?

更新更多信息,通过粘贴视频的 URL,我让它以某种方式工作,但我使用的代码似乎没有产生一个“干净”的视频 URL,而是产生如下内容:https://www.youtube.com/v/pzhL7jpsiNw?version=3&f=user_uploads&app=youtube_gdata

通过反复试验,我意识到我需要这样的东西:http://www.youtube.com/watch?v=pzhL7jpsiNw

产生第一个的代码,取自我一直在浏览的各种 GDATA 教程。

GDataEntryBase *entry2 = [[feed entries] objectAtIndex:indexPath.row];
NSArray *contents = [[(GDataEntryYouTubeVideo *)entry2 mediaGroup] mediaContents];
[self embedYouTube:[NSURL URLWithString:[[contents objectAtIndex:0] URLString]] frame:CGRectMake(0, 0, 320, 200)];

[NSURL URLWithString:[[contents objectAtIndex:0] URLString]] 生成链接的“详细”版本。

除了开始操纵我认为相当肮脏的字符串本身之外,有没有办法(我对 GDATA API 有点无能为力,没有时间深入研究它 atm)来获取所需的 URL?

【问题讨论】:

【参考方案1】:

我知道您说过您不想进行字符串操作,但我个人认为通过在 ? 处拆分字符串来剥离 GET 参数并不是特别脏。

例如:

NSString *dirty = @"https://www.youtube.com/v/pzhL7jpsiNw?version=3&f=user_uploads&app=youtube_gdata";
NSString *clean = [[dirty componentsSeparatedByString:@"?"] objectAtIndex:0];
NSLog(@"%@",clean);

给你https://www.youtube.com/v/pzhL7jpsiNw。

如果需要,您可以通过在/v/ 拆分来获取视频 ID。

NSString *vid = [[clean componentsSeparatedByString:@"/v/"] objectAtIndex:1];
NSString *newURL = [NSString stringWithFormat:@"http://www.youtube.com/watch?v=%@",vid];

【讨论】:

厌倦了试图找到“正确的方法”,最终改为这样做,感谢您的时间【参考方案2】:

嘿,伙计们刚刚发现了一点解决办法。我已将嵌入式视频添加到

?html5=1

那么视频将呈现 HTML5 播放器而不是 Flash 播放器。

谢谢。

【讨论】:

以上是关于嵌入 Youtube 视频显示空白屏幕的主要内容,如果未能解决你的问题,请参考以下文章

如何修复折叠的嵌入式 YouTube 视频?

YouTube 视频未在 WebView 中播放 - Android

Youtube 视频显示在冲击波播放器中,而不是 youtube 视频

YouTube 嵌入 UIWebViews 不再适用于 iOS

如何在 Laravel 中上传和显示嵌入的 youtube 视频

YouTube 嵌入在各种浏览器中显示不同的视频