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

问题描述 投票:0回答:1

有人可以帮我检查为什么这段代码在 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
}

代码笔

更准确地说,可视化和 getByteFrequencyData/getByteTimeDomainData 不适用于互联网广播(Icecast/shoutcast),但适用于单个远程 mp3。

  1. CodePen - 音频流测试 Icecast - 在 Safari 中无法工作
  2. CodePen - 音频流 测试 mp3 - 在 Safari 中工作
javascript safari web-audio-api icecast
1个回答
0
投票

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

分析器数据全为零,这是存在 CORS 问题时的典型情况。然而,我没有发现 Icecast 流的响应标头有任何问题。

Access-Control-Allow-Origin
设置为
*
,与 GitHub.io 流相同。

我看到的回复中唯一两个有意义的差异:

  • MP3 文件的
    Content-Type
    audio/mp3
    错误。 (应该是
    audio/mpeg
    。)
  • Safari 从流中请求 ICY 风格的元数据。

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

© www.soinside.com 2019 - 2024. All rights reserved.