【问题标题】:Shoutcast stream spectral plot in JavascriptJavascript中的Shoutcast流谱图
【发布时间】:2023-03-19 12:42:01
【问题描述】:

我正在尝试制作 SHOUTcast 音频流的实时频谱图。我发现这个页面http://www.aerodynes.fr/2014/04/14/a-pure-javascript-audio-waterfall/ 有人几乎完全按照我的意愿进行操作,但使用的是声卡中的音频。如何以与他相同的方式打开 SHOUTcast 流进行处理?我似乎无法在 Web Audio API 中找到有关它的信息

// Open the microphone
function init() {
    var audioConstraints = {
        audio: true
    };
    getUserMedia(audioConstraints, gotStream);
}
...

感谢您的任何建议/信息。

【问题讨论】:

    标签: javascript audio shoutcast internet-radio


    【解决方案1】:

    你不能直接。您必须向 MacGyver 提供一些解决方案。

    您将遇到的第一个问题是您无法从大多数浏览器直接连接到 SHOUTcast 流。虽然 SHOUTcast 本质上是 HTTP,但有一个小差异会破坏兼容性,尤其是对于更现代的客户端。一个普通的 HTTP 服务器在它的响应中返回一个状态行,如下所示:

    HTTP/1.1 200 OK
    

    SHOUTcast 服务器返回:

    ICY 200 OK
    

    解决此问题的唯一方法(假设您仍需要使用 SHOUTcast)是在重写响应状态行时代理数据服务器端。

    下一个问题是 SHOUTcast/Icecast 流使用编解码器,通常是 ADTS 中的 MP3 或 AAC,将音频压缩到适合互联网流的带宽。 Web Audio API 处理浮点 PCM 样本。您将不得不解码音频流。虽然这通常可以在浏览器中完成,但这取决于您使用的编解码器。否则,您将不得不在服务器端进行,此时您还不如在服务器端进行频谱分析并流式传输频带值。

    我认为处理此问题的最佳方法是让您的流在音频元素或对象中播放,并将其用作 Web 音频 API 节点,然后将其连接到您的分析器节点以获取频谱。您需要在服务器上使用 Icecast,并且必须将流转码为几个编解码器才能获得更广泛的浏览器支持。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-03-31
      • 2010-12-28
      • 2012-10-22
      • 2015-10-07
      • 2014-09-27
      • 2015-03-19
      • 1970-01-01
      • 2015-12-13
      相关资源
      最近更新 更多