我正在尝试使用网络音频API从vimeo视频中提取或分析音频,并且想知道这是否可行以及如何实现。
现在我得到了错误:
Uncaught TypeError: Failed to execute 'createMediaElementSource' on 'AudioContext': parameter 1 is not of type 'HTMLMediaElement'
…当我尝试将视频作为我的iframe的createMediaElementSource(video)
答案 0 :(得分:0)
不幸的是,我认为无法做您想做的事。至少不完全按照您想要的方式。
createMediaElementSource()
工厂功能仅适用于媒体元素。这些只是<audio/>
和<video/>
元素。这就是为什么当直接与<iframe/>
一起使用时,它不起作用的原因。
通常,您会查询此类媒体元素,例如按其ID进行查询,如下所示:
document.querySelector('#myAudioElement');
但是,如果元素位于<iframe/>
内,这并不是那么容易。然后,只有在<iframe/>
和父文档的来源相同的情况下,才可以查询元素。这是因为same-origin policy是一项安全功能。想象一下,如果有可能在<iframe/>
中加载任何页面然后随意对其进行修改,那么攻击者该怎么办。
当然,这是您的用例的障碍。也许您可以选择构建浏览器扩展,因为它们通常具有更多特权,并且可以查询浏览器加载的任何页面的DOM。
或者,在某些浏览器中,也可以禁用同源策略。但这通常仅在开发期间有用,因为您只能对整个浏览器禁用此策略,这是一个安全问题,除非您仅打开完全信任的网站。