我尝试在我的一个项目网页中为youtube视频和基于视频的音频文件创建委派菜单,并且除Chrome之外,它们在FF,Safari,IE等中都可以正常运行。
我知道自版本66起(https://developers.google.com/web/updates/2017/09/autoplay-policy-changes),Chrome浏览器中的自动播放受到限制。
我得出了一个结论,那就是这可能是这里的问题,并通过播放静音(Chrome自动播放策略中的例外情况)对此进行了验证。
用户启动的播放即使在Chrome中也可以正常运行。因此,我想尝试的是将用户操作(单击外部播放按钮)委派给iframe视频,以使其接受播放。
var player = YT.Player( ... )
var player_elem = $(iframe#youtube_x);
/* ... */
case "play":
// why mute?
// => https://developers.google.com/youtube/iframe_api_reference?hl=de#Autoplay_and_scripted_playback
// => https://stackoverflow.com/questions/50507985/youtube-iframe-api-auto-play-not-working-for-chrome-and-video-resolution-set-not
player.mute();
pauseAll(); // 4all player as p => p.pauseVideo()
player.playVideo();
setTimeout(function(){
player.unMute();
setTimeout(function(){
state = player.getPlayerState();
switch(state){
case 5: // positioning
case -1: // not started
case 0: // ended
case 2: // paused
Console.log("cant play content ...");
// player_elem.delegat() is deprecated
player_elem.on( 'click', null, event.data )
break;
case 3: // buffering
Notice.console.log("still buffering .. ");
case 1: // played
break;
}
}, 300);
delayedPlayerStateChanged(player_elem.attr("id"), ctrl_bar);
}, 100);
delayedPlayerStateChanged(player_elem.attr("id"), ctrl_bar);
break;
我需要一个代码段,以从页面中委派用户操作“播放”,以被iframe接受为用户操作。镀铬甚至有可能吗?
答案 0 :(得分:0)
历史
首先,我试图简单地添加提及的(gesture-delegation article @github.com)
delegatestickyuseractivation="media"
但这对我不起作用(YTs playVideo()仅在直接在YT视频iframe上进行交互之后才能起作用)。我还发现了有关委托粘性用户激活的文章,并且尚未正确实施。本文建议使用
gesture="media"
改为html属性。
最后
..他的浏览器通过通知我(在JS开发控制台中)带来了该解决方案,因为iframe不支持姿态=“ media”,我应该尝试使用
allow="autoplay"
就这样,就这么简单。
<iframe id="youtube_{$vid.id}"
src="{$vid.uri}?{$vid.player_parameter}"
delegatestickyuseractivation="media"
allow="autoplay">
</iframe>
通知
此解决方案仅在用户与主页互动(嵌入youtube视频嵌入之类的媒体iframe)后生效。因此,这不是针对Chrome自动播放策略的解决方法。这只是将用户交互委派给iframe使其接受YT媒体控制命令的一种方法。