Как транслировать живое видео h.264 (IP-камера) в браузер?(бонус: низкая пропускная способность и задержка) - PullRequest
0 голосов
/ 24 сентября 2018

Мне нужно передавать потоковое видео в кодировке h.264 с IP-камеры в браузер, поддерживая при этом все распространенные браузеры и мобильные устройства (например, Android, Firefox, Chrome, IE, Safari (Mac OS и iOS)) ипри минимальных требованиях к пропускной способности и задержке.

Для MPEG-DASH требуется поддержка браузера для расширений Media Source, которые НЕ поддерживаются iOS .Так что это не так.

HLS поддерживается только Safari и Edge .

Также, похоже, DASH налагает задержку в несколько секунд, что не является предпочтительным.

Я бы хотел иметь возможность группировать входящие данные h.264 (т.е. фрагментированный MP4 ), передавать данные в браузер через веб-сокеты, а затем выгружать фрагменты в проигрыватель определенного типа, когда они

Broadway и его вилки - это javascript-декодер h.264, и существует проект Broadway-stream , который поддерживает потоки вместо файлов, но документыбедны, и я могу найти примеры потоковой передачи только тогда, когда источник не работает.

Самый неотложный вопрос: как передать «фрагментированные данные» игроку или элементу HTML видео по мере их поступления в браузер?

Я думаю, чтоидеальная настройка:

  1. Используйте ffmpeg для перекодирования исходного видео в формат чанка (fMP4)
  2. Передайте чанк-вывод на узелПриложение JS , которое отправляет каждый чанк через Websocket всем подключенным зрителям
  3. Браузеры зрителей сбрасывают каждый входящий чанк в своего рода декодер, который воспроизводит видео.

IЯ дошел до момента передачи полученных кусков в видеодекодер.Как это можно сделать без зависимости от расширений Media Source и предоставления зрителям возможности присоединяться к потоку в случайное время?

1 Ответ

0 голосов
/ 04 октября 2018

Вы немного противоречите себе, потому что эти две вещи:

Низкая задержка и Пропорченные данные не могут идти вместе, это либо одно, либоДругой.Когда вы накапливаете порцию продолжительностью N секунд, вы вводите задержку N секунд.

Так что, если вам нужно воспроизведение с низкой задержкой вашего живого потока H.264, который будет воспроизводиться в браузерах на всех устройствах, ваш единственный выбор - WebRTC,Потоковая потоковая передача, такая как HLS или Dash, вам не поможет.

Расширения источников медиа через Websockets - еще одна альтернатива, и она работает с чанками, передаваемыми через Websocket в MSE в браузерах;но вам нужно отправить чанки длительностью 30-100 мс, чтобы задержка составляла менее секунды.Это также не работает на iOS.

Здесь вы можете сравнить задержку WebRTC и MSE с живой IP-камерой H.264: http://umediaserver.net/umediaserver/demohtml5WebRTCplayer.html http://umediaserver.net/umediaserver/demohtml5MSEplayer.html

...