WebKit相当于Firefox的"moz-chunked-arraybuffer" xhr responseType

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:

流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

故事结束 :)

2
谢谢更新!非常感谢。 - Yetti
不幸的是,在Firefox中,默认情况下仍未启用使用Fetch API进行流式传输,因此我们仍然需要依赖“moz-chunked-arraybuffer”来支持Firefox :( - Tey'
使用Fetch API和ReadableStream显示MJPEG视频流的简短示例:https://github.com/proxy-m/mjpeg-stream-player - user1742529
3个回答

3

有任何供应商已经实现了这个吗? - abergmeier

2

0

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

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

你可以解码音频数据:decodeAudioData() 你可以通过一个AudioBuffer播放音乐,该音频缓冲区可以通过Web套接字或分块的HTTP流式传输向您流式传输音乐。

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

因此,真正的答案是使用AudioContext,您将会非常顺利。


  1. 你需要从Icecast(icy-metadata)中删除额外的字节。
  2. decodeAudioData()在每个缓冲区中添加了一些额外的毫秒级“空白”音频,这会导致音频质量不佳。
- Julien CROUZET

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