我必須在亞馬遜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