此問題是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