javascript Safari中的音频可视化不适用于互联网广播流(Icecast/shoutcast)



有人能帮我检查一下为什么这个代码在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。

  1. CodePen-音频流测试icecast-在Safari中不工作
  2. CodePen-音频流测试mp3-在Safari中工作

我认为这实际上是Safari中的一个错误。

分析仪数据全部为零,如果存在CORS问题,这是典型的情况。然而,我认为Icecast流的响应头没有任何问题。CCD_ 1被设置为与GitHub.io流相同的CCD_。

我看到的回应中仅有的两个有意义的差异:

  • MP3文件具有错误的Content-Typeaudio/mp3。(应该是audio/mpeg。(
  • Safari从流中请求ICY样式的元数据

我怀疑Safari正在将流交给其他组件,并且无法使用MediaElementSourceNode捕获其输出。

不过,希望我错了,人们可以拿出一个真正的解决方案,并否决这个答案。:-(

最新更新