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

Я пытаюсь написать веб-сервис (используя C# и WebAPI, хотя реальная серверная технология, вероятно, не важна), в котором размещаются динамические видеофайлы для использования базовым элементом HTML5-видео.

Вот моя ситуация и мои требования:

  • Видео транскодируется на лету, поэтому окончательный размер файла неизвестен. Я не могу предоставить Content-Length, Однако длительность видео заранее известна.
  • Видео должно воспроизводиться сразу после загрузки страницы, даже если оно не было перекодировано.
  • Пользователь должен иметь возможность с помощью элементов управления видео HTML5 осуществлять поиск вперед и назад в видео. Если они попытаются перейти к точке, которая не перекодирована, запрос будет заблокирован, пока транскодирование не будет установлено.

Я пытался использовать 206: Partial Content ответ с Content-Range заголовок, но так как я не могу предоставить content-lengthпроигрыватель в Chrome, похоже, не может искать дальше, чем первый фрагмент видео, который он получает, а проигрыватель в Firefox даже не пытается загрузить больше, чем первый фрагмент. Также недопустимо отвечать диапазоном за пределами того, что запрашивает клиент, но видеоплеер всегда запрашивает байты 0+.

Без длины контента я подумал об использовании Transfer-Encoding: chunked и чанкинг выхода. Однако Chrome не позволяет искать видео, если сервер не поддерживает ранжированные запросы.

Я также подумал о том, чтобы указать поддельную длину контента в 1 ТБ или что-то смешное, просто чтобы я мог использовать опцию дальнего ответа, но я не знаю, повлияет ли это на индикатор выполнения или возможности поиска. Определяет ли проигрыватель HTML5 размеры индикатора выполнения в зависимости от размера или продолжительности файла?

Так какие у меня варианты? Я уверен, что это проблема, которая была решена раньше. Можно ли использовать ранжированные ответы в сочетании с кусочным кодированием?

0 ответов

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