我在HTML5页面中嵌入了一个YouTube视频链接,我希望它可以自动播放(autoplay)。
以下代码在浏览器中有效,但在iPhone上无法自动播放,需要额外点击才能播放。
<iframe type="text/html" width="125" height="100" src="http://www.youtube.com/embed/d_g0251EfB8?autoplay=1" frameborder="0"></iframe>
该怎么办?
我在HTML5页面中嵌入了一个YouTube视频链接,我希望它可以自动播放(autoplay)。
以下代码在浏览器中有效,但在iPhone上无法自动播放,需要额外点击才能播放。
<iframe type="text/html" width="125" height="100" src="http://www.youtube.com/embed/d_g0251EfB8?autoplay=1" frameborder="0"></iframe>
该怎么办?
无法完成。由于多种原因(包括但不限于数据使用),苹果不允许视频自动播放。
请参见此问题的已接受答案。
更新:
iOS 10+ 现在允许在 HTML5 < video> 元素上自动播放,只需将音频静音即可。Youtube 仍然不支持。Android 仍然无法解决,但是这是一个开始!
示例:
<video autoplay muted>
<source src="movie.mp4" type="video/mp4">
Sadly, your browser does not support the video tag X_x
</video>
信息来源:https://webkit.org/blog/6784/new-video-policies-for-ios/
此文介绍了苹果公司的Webkit浏览器在iOS 10版之后对视频播放策略的改变。针对自动播放和预加载行为,新策略限制了这些行为的触发条件,以提高用户体验和网络开销。我已经尝试了以下方法,并成功地在WebView加载完成后自动播放了Youtube视频:
[self.webView setAllowsInlineMediaPlayback:YES];
[self.webView setMediaPlaybackRequiresUserAction:NO];
[self.view addSubview:self.webView];
NSString* embedHTML = [NSString stringWithFormat:@"\
<html>\
<body style='margin:0px;padding:0px;'>\
<script type='text/javascript' src='http://www.youtube.com/iframe_api'></script>\
<script type='text/javascript'>\
function onYouTubeIframeAPIReady()\
{\
ytplayer=new YT.Player('playerId',{events:{onReady:onPlayerReady}})\
}\
function onPlayerReady(a)\
{ \
a.target.playVideo(); \
}\
</script>\
<iframe id='playerId' type='text/html' width='100%%' height='%f' src='http://www.youtube.com/embed/%@?enablejsapi=1&rel=0&playsinline=0&autoplay=1' frameborder='0'allowfullscreen>\
</body>\
</html>",self.webView.frame.size.height,@"Dw9jFO_coww"];
[self.webView bringSubviewToFront:self.btnBack];
self.webView.backgroundColor = [UIColor clearColor];
self.webView.opaque = NO;
[self.webView loadHTMLString:embedHTML baseURL:[[NSBundle mainBundle] resourceURL]];