此问题是previous question的后续处理,由于@thejh而解决。连接'音频/ x-wav'缓冲区并使用'传输编码':'chunked'
我试图将文本转换为音频并将数据作为“分块”数据提供给客户端。 到目前为止,我的头看起来像这样:
res.writeHead(200, {
'Content-Type': 'audio/wav',
// I tried 'audio/x-wav' as well
'Transfer-Encoding': 'chunked'
});
然后我将文本转换为音频片段在队列中(我回来的base64编码数据),并为他们提供服务,像这样:
var src = Base64Audio.replace("data:audio/x-wav;base64,","");
var binAudio = new Buffer(src, 'base64');
res.write(binAudio);
所有信息正在传输并发送到客户端,但由于某种原因,浏览器(我正在Firefox 7.0.1中测试它)正在播放它并在第一个块后停止。这是result/demo showing the premature end of the audio,这是github上的the code being run。
这是为什么?这是因为x-wav数据在头部/元数据中具有元数据,如End或指定的长度?如果是这样的元数据是什么,是否有一些编辑方式,以便浏览器成功连接接收到的块?
我知道标题'Content-Length': Buffer.length
,但在这种情况下,我不知道整个流将会持续多久。
任何人都可以提供建议。是否可以在发送缓冲区之前编辑缓冲区,以便浏览器将它们正确连接起来?
在演示点的音频元素ec2-46-137-25-111.eu - 西1.compute.amazonaws .com似乎在倒台。 – rcode
@rcode演示/示例失败应该再次启动/联机。 – Christopher