4

我正在使用 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);
    }

谁能指出我正确的方向?

任何帮助表示赞赏。谢谢

4

1 回答 1

4

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

您需要强制使用音频流。幸运的是,这很容易通过在 URL 末尾添加分号来完成:

http://95.173.167.24:8009/;

请注意,日志中的 User-Agent 字符串将为MPEG OVERRIDE.

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

于 2012-10-01T13:34:06.800 回答