21

我想读取一个 MP3 流(从 icecast 读取 ICY 元数据,然后将二进制 MP3 数据传递给 Web Audio Api)。

Firefox 有一个“moz-chunked-arraybuffer”xhr responseType 来读取进度数据,但我找不到 webkit / chrome 的任何等价物。


编辑 2014/02/03:

Chrome 已经开始实现 xhr.responseType "stream"

“解析”位于 Chrome 中(带有 --enable-experimental-webkit-features 标志),但 xhr.response 结果对象(流)尚不能直接在 Javascript 中使用:https ://code.google.com/ p/chromium/issues/detail?id=240603


编辑 2014/07/10:

该规范现已开发:https ://github.com/whatwg/streams

Chromium 开发者计划“在不等待标准化完成的情况下做一些原型”


编辑 2015/01/22:

Streams API不会在 XHR 中实现(它只是用于原型设计)。它最终将Fetch API实现中实现,该实现最近在 Chrome 中发布(在实验标志后面)。


编辑 2015/01/30:Fetch API 有发货意图!Streams API 被宣布为“即将到来的集成”,它就在这里!


编辑 2015/04/15 :

\o/ 荣耀!Fetch API 现在登陆 Chrome 42(当前稳定版本:http: //googlechromereleases.blogspot.fr/2015/04/stable-channel-update_14.html)。42 不仅是对生命、宇宙和一切的答案,也是对“我如何像流一样消费“AJAX 请求”这个问题的答案:

https://github.com/GoogleChrome/samples/blob/gh-pages/fetch-api/fetch-response-stream.html

故事的结局 :)

4

3 回答 3

3

我的猜测是 WebKit 会得到https://dvcs.w3.org/hg/streams-api/raw-file/tip/Overview.htm

于 2013-03-07T22:02:50.930 回答
2

很抱歉成为坏消息的承担者,但据我所知,目前还没有 webkit 等价物。最初 chunked-arraybuffer 响应类型源于与您类似的问题:

http://lists.w3.org/Archives/Public/public-webapps/2011JulSep/0924.html

此外,MDN 将 responseType 列为仅在 Firefox 中可用:

https://developer.mozilla.org/en-US/docs/DOM/XMLHttpRequest

于 2013-03-05T19:43:52.077 回答
0

我认为您的问题的解决方案是没有看到 html5 的完整 AudioContext 对象。

http://www.html5rocks.com/en/tutorials/webaudio/intro/

您可以解码音频数据: decodeAudioData() 您可以通过 AudioBuffer 播放音乐,该 AudioBuffer 可以通过网络套接字将音乐流式传输给您,或者只是分块的 http 流式传输。

当你想播放一首歌时,你只需调用 playSound()

所以真正的答案是使用 AudioContext 你会很成功

于 2013-03-17T07:49:01.213 回答