この質問は、@thejh のおかげで解決された以前の質問のフォローアップです。
テキストを音声に変換し、データを「チャンク」データとしてクライアントに提供しようとしています。これまでのところ、ヘッダーは次のようになっています。
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 でテストしています) がそれを再生し、最初のチャンクの後で停止します。これはオーディオの途中終了を示す結果/デモです。これはgithubで実行されているコードです。
どうしてこれなの?これは、x-wav データに End のようなメタデータがあるか、ヘッダー/メタデータに指定された長さがあるためですか? もしそうなら、このメタデータは何ですか?ブラウザが受信したチャンクを正常に連結するように編集する方法はありますか?
ヘッダーは'Content-Length': Buffer.length
知っていますが、この場合、ストリーム全体がどれくらいの長さになるかわかりません。
誰でも提案を提供できますか。ブラウザがバッファを適切に連結するように、送信前にバッファを編集することはできますか?