Youtube嵌入视频:iPhone上的自动播放功能无法正常工作

55

我在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>

该怎么办?

4个回答

75

无法完成。由于多种原因(包括但不限于数据使用),苹果不允许视频自动播放。

请参见此问题的已接受答案


谢谢。让我删除我的问题。 - Avisek Chakraborty
44
请不要删除它。即使答案不符合您的期望,这仍然是有用的信息。 - Ed S.
那Facebook和Instagram是怎么做到的呢? - thibaut noah
2
请注意,如果您认为这是解决方案,则 YouTube iFrame Player API 的 playVideo() 函数在移动设备上无法正常工作。 - David
这真的很糟糕。防止滥用自动播放不应该关闭程序化API的所有其他(更好的)可能性。理智的做法是让用户选择允许每个页面甚至每次访问的程序控制,而不仅仅是严厉的“全部禁止”。 - Mallory-Erik

4

更新:

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版之后对视频播放策略的改变。针对自动播放和预加载行为,新策略限制了这些行为的触发条件,以提高用户体验和网络开销。


0
要在视频中启用自动播放,您需要在iframe的源代码中包含“mute”参数。需要注意的是,尽管像Firefox和Chrome这样的浏览器通常允许自动播放,但视频必须无声开始。
&mute=1

0

我已经尝试了以下方法,并成功地在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]];

4
代码中充满了错别字,缺乏清晰度 :( 哦,太糟糕了。 - David
1
OP 是在问 HTML5 而不是 ObjC,对吧? - Micha Mazaheri

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