使用 Audio API 播放音频流

Rya*_*ggs 5 html audio audio-streaming

我正在使用 HTML5 音频 api 来播放声音。这对于常规 mp3 文件工作正常,但当使用诸如 之类的声音流时http://95.173.167.24:8009,它无法播放。

这是我正在使用的代码:

 if('webkitAudioContext' in window) {
    var myAudioContext = new webkitAudioContext();
    }

    request = new XMLHttpRequest();
    request.open('GET', 'http://95.173.167.24:8009', true);
    request.responseType = 'arraybuffer';
    request.addEventListener('load', bufferSound, false);
    request.send();


    function bufferSound(event) {
      var request = event.target;
      var source = myAudioContext.createBufferSource();
      source.buffer = myAudioContext.createBuffer(request.response, false);
      source.connect(myAudioContext.destination);
      source.noteOn(0);
    }
Run Code Online (Sandbox Code Playgroud)

谁能指出我在这方面的正确方向?

任何帮助表示赞赏。谢谢

Bra*_*rad 5

问题可能是 SHOUTcast 正在将您的用户代理字符串检测为浏览器。它会查找Mozilla其中包含的任何字符串,然后说“哦,那是一个浏览器!向他们发送管理面板。”

您需要强制使用音频流。幸运的是,通过在 URL 末尾添加分号即可轻松完成此操作:

http://95.173.167.24:8009/;
Run Code Online (Sandbox Code Playgroud)

请注意,日志中的用户代理字符串将为MPEG OVERRIDE.

这适用于大多数浏览器。有些浏览器可能仍然不喜欢来自 SHOUTcast 的类似 HTTP 的响应,但这至少可以帮助您入门。