Javascript 如何收听youtube iframe的音量变化?

Javascript 如何收听youtube iframe的音量变化?,javascript,iframe,youtube,youtube-api,youtube-iframe-api,Javascript,Iframe,Youtube,Youtube Api,Youtube Iframe Api,我找到了一个示例,说明如何收听youtube iframe的播放\暂停按钮 player.addEventListener('onStateChange', function(e) { console.log('State is:', e.data); }); 现在我需要听音量的变化。 在youtube文档中,我找到了一个方法player.getVolume(),但是如果我想从iframe方面获得有关卷更改的信息,而不是从我的方面询问iframe,我不知道如何实现这个方法 这样的功能是

我找到了一个示例,说明如何收听youtube iframe的播放\暂停按钮

player.addEventListener('onStateChange', function(e) {
    console.log('State is:', e.data);
});
现在我需要听音量的变化。 在youtube文档中,我找到了一个方法
player.getVolume()
,但是如果我想从iframe方面获得有关卷更改的信息,而不是从我的方面询问iframe,我不知道如何实现这个方法

这样的功能是存在的(当我更改播放器的音量时,我看到行
音量(0-100)[当前级别:*]
),但无论是在互联网上还是在互联网上,我都找不到如何实现它

我还尝试将上述代码与
onApiChange
事件一起使用(我不清楚此事件的实际功能),例如:

但控制台并没有显示任何新内容

player.getOptions()显示
承诺{:数组(0)}

有人能举个例子吗?

我检查了的代码,发现显示当前YouTube卷的html行(
**
)不断闪烁(~2次/1秒),因此我可以假设此演示页面使用如下内容:

// YouTube returns Promise, but we need actual data
self = this
setInterval(function () { self.player.getVolume().then(data => { self.volumeLv = data }) }, 250)
可能不是最好的方法,但似乎没有其他选择(我也尝试了听音量条的适当样式的变化,但由于交叉原点问题,运气不佳)

所以,让我们“听”一下youtube的音量变化

以防万一,如果有人想设置youtube的音量,您需要使用
[this.]player.setVolume(音量从0到100)
请参阅

您可以侦听IFrame发出的
postMessage
事件,并仅对卷更改事件作出反应:

//实例化播放器。
函数onyoutubeiframeapiredy(){
var player=新的YT.player(“player”{
高度:“390”,
宽度:“640”,
videoId:“dQw4w9WgXcQ”
});
//这是将发出事件的源“窗口”。
var iframeWindow=player.getIframe().contentWindow;
//收听postMessage触发的事件。
window.addEventListener(“消息”,函数(事件){
//检查事件是否从YouTube IFrame发送。
if(event.source==iframeWindow){
var data=JSON.parse(event.data);
//YT使用“infoDelivery”事件来传输任何
//玩家的信息变化,
//例如当前时间或卷更改。
如果(
data.event==“infoDelivery”&&
data.info&&
data.info.volume
) {
console.log(data.info.volume);//还有data.info.mute(布尔值)
}
}
});
}


请注意,这依赖于一个私人API,该API可能随时更改,恕不另行通知。

您是否可以为人们提供一个可供使用的API?@NewToJS我添加了我也尝试过的内容。我无法提供任何
最小示例,因为我根本不知道如何解决我的问题。在过去的6个小时里,我一直在挖掘互联网和youtube文档。简单地说,我找不到任何提示,即使是为了尝试自己实现一些东西,然后提供一些最小的代码。通常我只提供很少的示例,但在这种情况下,这真的很难。如果/当客户端通过YouTube视频
iframe
更改音量以更新您的
滑块/范围时,您是否想要一个
事件监听器
?如果是这样的话,那么当我知道或者可以找到时,API中就不存在这样的事件侦听器。我目前也在使用这个API。如果你想让你的
滑块/范围
更新播放器,那么我可以为你提供一个例子,但不幸的是,没有相反的方法。
// YouTube returns Promise, but we need actual data
self = this
setInterval(function () { self.player.getVolume().then(data => { self.volumeLv = data }) }, 250)