有人能帮我检查一下为什么这个代码在Safari(osx(中不起作用吗?音频正在播放,但没有可视化。我尝试了我找到的所有暗示,但仍然没有成功。需要说明的是,它在Chrome(osx(中运行良好非常感谢的帮助
function getDataFromAudio() {
var freqByteData = new Uint8Array(analyser.fftSize / 2);
var timeByteData = new Uint8Array(analyser.fftSize / 2);
analyser.getByteFrequencyData(freqByteData);
analyser.getByteTimeDomainData(timeByteData);
return { f: freqByteData, t: timeByteData }; // array of all 1024 levels
}
Codepen
更准确地说,可视化和getByteFrequencyData/getByteTimeDomainData不适用于互联网收音机(Icecast/shoutcast(,但适用于单个远程mp3。
- CodePen-音频流测试icecast-在Safari中不工作
- CodePen-音频流测试mp3-在Safari中工作
我认为这实际上是Safari中的一个错误。
分析仪数据全部为零,如果存在CORS问题,这是典型的情况。然而,我认为Icecast流的响应头没有任何问题。CCD_ 1被设置为与GitHub.io流相同的CCD_。
我看到的回应中仅有的两个有意义的差异:
- MP3文件具有错误的
Content-Type
或audio/mp3
。(应该是audio/mpeg
。( - Safari从流中请求ICY样式的元数据
我怀疑Safari正在将流交给其他组件,并且无法使用MediaElementSourceNode捕获其输出。
不过,希望我错了,人们可以拿出一个真正的解决方案,并否决这个答案。:-(