Как кормить источник видео на основе временного диапазона?

Стандартный HTML5 video Элемент, кажется, работает с использованием байтовых диапазонов. Проблема в том, что сервер, который я использую для обслуживания видео контента, не поддерживает байтовые диапазоны. Он поддерживает только временные диапазоны (так как он основан на ffmpeg).

Например, я могу сделать запрос (в секундах) такой http://example.com/myvideo.mkv?range=3.40-49 и он возвращает видео контент с 3-й второй точки 40 мс до 49-й секунды.

Вопрос: возможно ли заполнить буфер источника медиа с использованием временных диапазонов? Как узнать, в каких временных диапазонах и когда нужен медиа-буфер (например, если клиент пытается использовать индикатор выполнения)?

Я проверил несколько игроков, таких как dash.js, но все они предполагают, что сервер поддерживает диапазон байтов, поэтому я не могу их использовать.

То, что я пробовал до сих пор: я думал использовать timestampOffset для подачи буфера массива с правильными байтами (на основе временного диапазона), но я не знаю, когда клиент ищет и в какой позиции (в секундах). Кроме того, я думаю, что должен заполнить пропущенный диапазон, но timestampOffset предоставляет только точку смещения / начала. Как узнать диапазон, чтобы избежать перезаписи уже кэшированного / буферизованного контента?

Я чувствую, что есть много крайних случаев, поэтому мне интересно, есть ли уже такой игрок, поддерживающий диапазон времени вместо диапазона байтов. Я в основном просто хочу предоставить function (videoSourceBuffer, startTime, stopTime) который заполняет videoSourceBuffer с видеоконтентом, начинающимся с startTime и останавливаться на stopTime,

  var mediaSource = new MediaSource();
    mediaSource.addEventListener('sourceopen', function() {
        var sourceBuffer = mediaSource.addSourceBuffer('video/webm; codecs="vorbis,vp8"');
            sourceBuffer.timestampOffset = 0;
            sourceBuffer.appendBuffer(videoBinary);
    });

0 ответов

Другие вопросы по тегам