Javascript 检测是否<;iframe>;正在播放音频

Javascript 检测是否<;iframe>;正在播放音频,javascript,web,audio,iframe,web-deployment,Javascript,Web,Audio,Iframe,Web Deployment,问题 我想知道嵌入我网站的是否正在播放音频 理想情况下,播放音频的“音量”也是如此,但这是可选的 请注意,不在同一原点,因此检查不是一个选项 我的具体用例 我是YouTube的开发者,到时候YouTube视频就会开始播放。YouTube视频正在中播放。我想知道YouTube是否发出声音。如果它不发出任何声音,将使用Web Audio API播放回退声音。(YouTube有时不会发出声音。例如,当用户将其YouTube音量设置设置为静音时。不幸的是,无法通过postMessageing YouTu

问题

我想知道嵌入我网站的
是否正在播放音频

理想情况下,
播放音频的“音量”也是如此,但这是可选的

请注意,
不在同一原点,因此检查
不是一个选项

我的具体用例

我是YouTube的开发者,到时候YouTube视频就会开始播放。YouTube视频正在
中播放。我想知道YouTube
是否发出声音。如果它不发出任何声音,将使用Web Audio API播放回退声音。(YouTube
有时不会发出声音。例如,当用户将其YouTube音量设置设置为静音时。不幸的是,无法通过
postMessage
ing YouTube
获取该信息)

相关问题


这不是复制品;我的问题专门要求音频检测,而相关问题要求所有音频检测。

这可能无法通过标题回答您的问题(我认为这甚至不可能),但它可能解决您的根本问题。您可以使用YouTube的JavaScript API检测音频是否静音,或者根据需要取消静音:

var tag=document.createElement('script');
tag.src=”https://www.youtube.com/iframe_api";
var firstScriptTag=document.getElementsByTagName('script')[0];
firstScriptTag.parentNode.insertBefore(标记,firstScriptTag);
var播放器;
函数onyoutubeiframeapiredy(){
player=新的YT.player('ytplayer'{
活动:{
“onReady”:onPlayerReady,
“onStateChange”:onPlayerStateChange
}
});
}
函数onPlayerReady(事件){
event.target.playVideo();
}
函数onPlayerStateChange(事件){
if(event.data==YT.PlayerState.PLAYING){
console.log(“ismute=“+event.target.ismute());
event.target.unMute();
事件.target.setVolume(100);
}
}

除非API允许。出于安全原因,您不能这样做。

这是正确答案。唯一可行的方法是,如果iframe的内容使用其内置的Analyzer节点运行其自己的Web音频图,然后通过postMessage或类似方式中继到另一个帧。是否可以自行控制音量?如果你能控制嵌入它的方式,你就可以。