所以我正在创建一个音频可视化网站,我认为如果我真的让用户将YouTube视频网址粘贴到网站上会很酷,并且该网站会使用该YouTube视频的源网址作为源html5音频标签(html5音频支持mp4)。但出于某种原因,它只是不想工作。
现在,当我尝试这样做时,我收到错误“MediaElementAudioSource因CORS访问限制而输出零”。所以,既然我之前已经读过这个问题,我就找到了我可以添加属性的解决方案:crossOrigin =“anonymous”;到我的音频标签,它将开始工作。
不,它没有。现在我收到错误“Uncaught(in promise)DOMException:无法加载,因为找不到支持的源代码。”我完全被难倒了。
另请注意,当用户只是将音轨或mp4视频拖到网站上时,该网站现在运行得非常好。我使用URL.createObjectURL()来创建拖动文件的URL。
非常感谢任何帮助,谢谢。
edit1:所以我做了更多的研究,我发现了一篇文章,HTMLMediaElement.play() Returns a Promise,所以我把一些代码放在一起
var audio = document.getElementById("myAudio");
audio.crossOrigin = "anonymous";
audio.src = songSources[currentIndex];
audio.load();
var playPromise = audio.play();
if (playPromise !== undefined) {
playPromise.then(function() {
alert("good");
}).catch(function(error) {
alert(error);
});
}
并且正如我预期的那样,我从catch块得到了一条错误消息。它显示为:“NotSupportedError:无法加载,因为找不到支持的源。”我发现这非常令人困惑,因为如果我只是从中删除crossOrigin =“anonymous”属性,音频元素将会正常运行。有什么想法吗?
edit2:似乎我也难倒你们,哈哈。