Этот вопрос является продолжением предыдущего вопроса , который был решен благодаря @ 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 имеют метаданные, такие как конец или указанная длина в заголовке / метаданных?Если да, что это за метаданные и есть ли какой-то способ их редактирования, чтобы браузер успешно конкатенировал полученные фрагменты?
Мне известен заголовок 'Content-Length': Buffer.length
, но в этом случае я не знаюкак долго будет весь поток.
Может кто-нибудь предложить предложения.Можно ли редактировать буферы перед их отправкой так, чтобы браузер правильно их объединял?