使用音频API播放音频流

5

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

有人能给我指点一下吗?

非常感谢任何帮助。


1
问题可能不在于您的代码,而是 SHOUTcast 服务器提供了错误的 HTTP 响应。大多数浏览器会忽略它,但有些则不会。您正在使用哪个浏览器? - Brad
哦,好的,我正在使用最新版本的Chrome浏览器。 - RyanDreggs
1个回答

5
问题很可能是SHOUTcast将你的User-Agent字符串识别为浏览器。它会查找任何包含“Mozilla”的字符串,并说:“哦,那是一个浏览器!向他们发送管理面板。”
您需要强制使用音频流。幸运的是,这可以通过在URL末尾添加分号轻松完成:
http://95.173.167.24:8009/;

请注意,您日志中的用户代理字符串将是 MPEG OVERRIDE
这适用于大多数浏览器。 一些浏览器仍可能不喜欢来自 SHOUTcast 的类似于 HTTP 的响应,但这至少可以让您开始。

另外,如果您无法按照自己的意愿使其正常工作,并且想要一个适当的HTTP流,则我现在有一个可用于测试的服务。http://www.audiopump.co/preview.php - Brad

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接