我必须在亚马逊S3(AWS的MP3设置为公共) 的MP3链接的音频播放器运行正常。MediaElementAudioSource输出零由于CORS访问限制
但是当我尝试做一个可视化工具,只要我连接到audioplayer存在CORS错误。我不明白为什么会这样。
我一直在使用analyserNode的MDN样本为基础 https://developer.mozilla.org/en/docs/Web/API/AnalyserNode
<audio id="audio-player-console" src="${AWS_songUrl}" autoplay>
<p>Your browser does not support this audio player </p>
</audio>
只是为了澄清,只要不试图为analyserdata连接时,运行audioplayer没有问题的轨道。
如果我添加crossorigin =“匿名”的音频标签,然后我在所有得到什么和音频播放器不能播放的曲目
<audio id="audio-player-console" src="${AWS_songUrl}" crossorigin="anonymous" autoplay>
<p>Your browser does not support this audio player </p>
</audio>
后“公开”我的AWS CORS配置已经设置
<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
<AllowedOrigin>*</AllowedOrigin>
<AllowedMethod>GET</AllowedMethod>
<MaxAgeSeconds>3000</MaxAgeSeconds>
<AllowedHeader>*</AllowedHeader>
</CORSRule>
</CORSConfiguration>
这里是我尝试将音频标签连接到audiocontext的可视化,这是一个启动失败的CORS检查
canvasCtx = visualizerCanvas.getContext("2d")
audioCtx = new (window.AudioContext || window.webkitAudioContext)()
var audioSrc = audioCtx.createMediaElementSource(aPlayer)
var analyser = audioCtx.createAnalyser()
audioSrc.connect(analyser)
analyser.fftSize = 2048
var bufferLength = analyser.frequencyBinCount
var dataArray = new Uint8Array(bufferLength)
analyser.getByteTimeDomainData(dataArray)
我只是不知道我能做什么。我已经设置了AWS配置为public,允许所有的起源和所有的头
我有永远同样的问题。我花了好几个小时试图弄清楚这一点。我问过两个SO问题(每个问题都收到upvotes),我刚刚在askubuntu.com上提出了一个问题。我希望我能尽快找出解决办法,然后我可以在这里重新发布。 – www139
我认为这个问题与音频标记已经创建一个之后可视化器节点导致第二次cors检查有关。此时文件位于不同位置,因此cors检查失败。但我对此并不确定。我通过完全放弃音频标签并仅为整个播放器使用audiocontext对象解决了这个问题:joegrundman.github.io/gplayer-react/ – Jope