【发布时间】:2011-11-30 15:58:52
【问题描述】:
我在从节点提供二进制数据时遇到问题。我在一个名为 node-speak 的节点模块上工作,它执行 TTS(文本到语音)并返回一个 base64 编码的音频文件。
到目前为止,我这样做是为了将 base64 转换为 Buffer/binary,然后提供它:
// var src = Base64 data
var binAudio = new Buffer(src.replace("data:audio/x-wav;",""), 'base64');
现在我正在尝试从带有如下标题的节点提供此音频:
res.writeHead(200, {
'Content-Type': 'audio/x-wav',
'Content-Length': binAudio.length
});
并像这样服务它:
res.end(binAudio, "binary");
但它根本不起作用。是不是有什么我不太明白或者我做错了什么,因为这不是提供有效的audio/x-wav 文件。
注意:Base64 数据是有效的,我可以像这样提供它 [见下文],它工作正常:
// assume proper headers sent and "src" = base64 data
res.end("<!DOCTYPE html><html><body><audio src=\"" + src + "\"/></body></html>");
那么为什么我不能提供二进制文件,我做错了什么?
【问题讨论】:
标签: audio node.js binary base64 buffer