在UIWebview中自动播放Youtube视频

5
我在这个论坛中发现了许多关于嵌入Youtube视频和自动播放的问题,但是没有一个能够清楚地解决我的所有疑惑。
我发现了两种在UIWebView中嵌入Youtube视频的方法:
NSString *youTubeHTMLTemplate = @"<html><head><style type=\"text/css\">body { background-color: transparent;color: white;}</style></head><body style=\"margin:0\"><embed id=\"yt\" src=\"%@\" type=\"application/x-shockwave-flash\" width=\"%0.0f\" height=\"%0.0f\"></embed></body></html>"; 
finalHtml = [NSString stringWithFormat:youTubeHTMLTemplate, fullYopuTubeUrl, htmlFrameWidth, htmlFrameHeight];

2)
NSString *youTubeHTMLTemplate = @"<html><body style=\"margin:0;padding:0;\"><iframe class=\"youtube-player\" type=\"text/html\" width=\"%f\" height=\"%f\" src=\"http://www.youtube.com/embed/%@\" frameborder=\"0\" allowfullscreen></iframe></body></html>";
finalHtml = [NSString stringWithFormat:youTubeHTMLTemplate, htmlFrameWidth, htmlFrameHeight, videoID];

如果我使用(1)方法并按照这里所给的方法,我的视频将自动播放。想法是在UIWebView中找到按钮并发送点击事件。
如果我使用(2)并遵循同样的方法,视频将不会自动播放。
我认为(1)方法仅适用于Flash视频(对吗?),因此推荐使用(2)方法。
有没有任何方式可以实现(2)方法?这个链接说不行。
可以有人确认:
  • 如果我正确,那么(2)方法是推荐的。
  • 使用(2)无法自动播放。

如果我使用(1)方法并按照此处给出的方法进行操作...您正在链接到问题而不是该页面上的特定答案...有大约10个答案...您能否请链接到您所考虑的特定答案? - abbood
抱歉 @abbood,但是我之前提供的方法在 iOS > 5 (或6)上已经不再适用了。请使用 YouTube 的 JS API。 - msk
嗯,我希望有一个更通用的解决方案。例如,我正在链接到直播 Flash 视频,我希望它在用户加载包含直播视频代码的 viewController 时立即播放。我认为我正在寻找自动化用户单击播放按钮的方法。但是,我不知道苹果是否会接受这样的代码。 - abbood
这篇文章排除了使用JavaScript单击Flash视频的可能性...遗憾! - abbood
4个回答

4

我通过添加以下代码解决了问题:

webview.mediaPlaybackRequiresUserAction=NO;
webview.allowsInlineMediaPlayback=YES;

3

问:如果我没错的话,(2)是推荐的方法。

答:是的,(2)方法适用于没有Flash支持的i设备。

问:(2)无法自动播放。

答:目前无法自动播放。

更新:我能够通过使用Youtube JS API来自动播放Youtube视频,请参见https://developers.google.com/youtube/js_api_reference

只需从onPlayerReady中调用playVideo即可。

function onPlayerReady(event) {
                event.target.playVideo();                    
            }

你如何从UIWebView中调用它? - shim

0

可以通过发出以下命令来实现自动播放:

webView.mediaPlaybackRequiresUserAction=FALSE;

这是一个旧的线程,但我记得仅仅设置mediaPlaybackRequiresUserAction = NO并不能帮助我。我已经更新了我的答案,并且现在可以自动播放YouTube视频。 - msk
哦,可能是的,因为我最后一次尝试它是在 iOS5 上,那时它没有工作。不过,我的答案方法对于 iOS>=5 是可行的。 - msk
我因为这一行代码整天都在苦思冥想。谢谢! - dreampowder

-1

您还可以使用来自Saurabh Wadhwa 答案 的技巧,在UIWebView完成下载后触发endActionsForControlEvents:UIControlEventTouchUpInside


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接