У меня есть массив BLOB-объектов (на самом деле двоичные данные - я могу выразить это, однако, это наиболее эффективно. Сейчас я использую BLOB-объекты, но, возможно, Uint8Array
или что-то было бы лучше).Каждый BLOB-объект содержит 1 секунду аудио / видео данных.Каждую секунду новый BLOB-объект генерируется и добавляется в мой массив.Таким образом, код выглядит примерно так:
var arrayOfBlobs = [];
setInterval(function() {
arrayOfBlobs.append(nextChunk());
}, 1000);
Моя цель - передать эти аудио / видео данные в элемент HTML5.Я знаю, что URL-адрес BLOB-объекта может быть сгенерирован и воспроизведен следующим образом:
var src = URL.createObjectURL(arrayOfBlobs[0]);
var video = document.getElementsByTagName("video")[0];
video.src = src;
Конечно, это проигрывает только первую 1 секунду видео.Я также предполагаю, что могу тривиально объединить все BLOB-объекты, в настоящее время находящиеся в моем массиве, и воспроизвести более одной секунды:
// Something like this (untested)
var concatenatedBlob = new Blob(arrayOfBlobs);
var src = ...
Однако в конечном итоге данных все равно не хватит.Поскольку BLOB-объекты являются неизменяемыми, я не знаю, как продолжать добавлять данные по мере их поступления.
Я уверен, что это должно быть возможно, поскольку YouTube и многие другие службы потокового видео используют URL-адреса Blob для воспроизведения видео.Как они делают это?