是否可以在Vimeo iframe中使用网络音频API

时间:2019-06-03 15:43:48

标签: vimeo web-audio-api

我正在尝试使用网络音频API从vimeo视频中提取或分析音频,并且想知道这是否可行以及如何实现。

现在我得到了错误:

Uncaught TypeError: Failed to execute 'createMediaElementSource' on 'AudioContext': parameter 1 is not of type 'HTMLMediaElement'

…当我尝试将视频作为我的iframe的createMediaElementSource(video)

1 个答案:

答案 0 :(得分:0)

不幸的是,我认为无法做您想做的事。至少不完全按照您想要的方式。

createMediaElementSource()工厂功能仅适用于媒体元素。这些只是<audio/><video/>元素。这就是为什么当直接与<iframe/>一起使用时,它不起作用的原因。

通常,您会查询此类媒体元素,例如按其ID进行查询,如下所示:

document.querySelector('#myAudioElement');

但是,如果元素位于<iframe/>内,这并不是那么容易。然后,只有在<iframe/>和父文档的来源相同的情况下,才可以查询元素。这是因为same-origin policy是一项安全功能。想象一下,如果有可能在<iframe/>中加载任何页面然后随意对其进行修改,那么攻击者该怎么办。

当然,这是您的用例的障碍。也许您可以选择构建浏览器扩展,因为它们通常具有更多特权,并且可以查询浏览器加载的任何页面的DOM。

或者,在某些浏览器中,也可以禁用同源策略。但这通常仅在开发期间有用,因为您只能对整个浏览器禁用此策略,这是一个安全问题,除非您仅打开完全信任的网站。