【问题标题】:Play audio stream with Audio API使用 Audio API 播放音频流
【发布时间】:2012-09-20 08:27:37
【问题描述】:

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

谁能指出我正确的方向?

感谢任何帮助。 谢谢

【问题讨论】:

  • 问题可能不在于您的代码,而在于 SHOUTcast 服务器提供了损坏的 HTTP 响应这一事实。大多数浏览器会忽略它,但有些则不会。你用的是什么浏览器?
  • 哦,好的,我正在使用最新版本的 Chrome

标签: html audio audio-streaming


【解决方案1】:

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

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

http://95.173.167.24:8009/;

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

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

【讨论】:

  • 另一方面,如果您不能按照您想要的方式工作,并且想要一个正确的 HTTP 流,我现在有一项服务可用于测试。 audiopump.co/preview.php
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-20
  • 2014-07-06
相关资源
最近更新 更多