【发布时间】:2012-01-11 09:36:21
【问题描述】:
这个问题是previous question 的后续问题,感谢@thejh。
我正在尝试将文本转换为音频并将数据作为“分块”数据提供给客户端。 到目前为止,我的标题看起来像这样:
res.writeHead(200, {
'Content-Type': 'audio/wav',
// I tried 'audio/x-wav' as well
'Transfer-Encoding': 'chunked'
});
然后我将文本的 sn-ps 转换为队列中的音频(我将其作为 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-west-1.compute.amazonaws.com。
-
@rcode 演示/示例故障应该再次上线/上线。
标签: node.js buffer wav audio-streaming chunked-encoding