Современный способ отображения потока RTSP H264 в браузере (HTML5) - PullRequest
2 голосов
/ 09 января 2020

Да, эта топи c время от времени появляется и здесь, на SO.

Я много читал об этой топике c, а также пробовал некоторые решения, но у меня есть некоторые ограничения :

  1. независимость от браузера (большинство браузеров должны работать)
  2. независимость от платформы (должны поддерживаться основные платформы)
  3. работа "из коробки" ( без плагинов!)
  4. низкая задержка (предпочтительно ниже 1 se c)
  5. пропускная способность ограничена (MJPEG не поддерживается)
  6. без транскодирования!

Итак, вперед: поток H264 кажется идеальным для ограничений 1 и 2.

Также мой источник производит живой H264 (а точнее: MPEG-4) AV C, часть 10 ) в контейнер RTSP.

Но RTSP по-прежнему не поддерживается в браузере.

Что я проверял:

Все посты выше относятся к этому вопросу, и там было много ценной информации.

Также я прочитал очень хорошая статья от 2014 года (!), Которая детализирована и довольно перспективна.

Итак, на сегодняшний день лучшее решение будет таким:

  1. анализ RTSP и извлечение потока h264
  2. реструктуризация потока (преобразование его во фрагментированный MP4)
  3. websocket (см. Позже)
  4. fMP4 может быть легко воспроизводится видео HTML5, если в браузере установлена ​​ MSE (альтернатива - использовать broadway. js, это круто, но сильно загружает процессор)

Ther Это решения, в которых этапы 1 и 2 выполняются на стороне сервера, затем fMP4 помещается в веб-сокет. Клиент получает данные из веб-сокета и передает их компонентам MSE для отображения.

Статья 2014 года показывает, что шаг 2 также может происходить на стороне клиента. В этом случае на сервере выполняется только шаг 1. Затем h264 помещается в веб-сокет, а на стороне клиента происходит реструктуризация и отображение.

Streamedian показалось хорошим решением на первый взгляд, но они не публикуют sh свои серверные коды, а также их сайт возвращался с ошибкой 502. За день.

Я не хочу использовать GStreamer или ffmpeg , они оба слишком тяжелые.

Однако есть хорошие вещи, которые могут помочь:

  • MP4Box . js - сегментировать файл MP4 для использования с API расширения источника мультимедиа
  • mux. js - инструменты проверки и обработки видеофайлов

Возвращаясь к моему списку, step2 можно сделать с помощью MP4Box - по крайней мере, я верю / надеюсь.

Step3 и step4 прямолинейны, на этих тоннах есть тонны хауто.

Однако я немного озадачен ste p1 . Это должно быть сделано на стороне сервера, предпочтительно на языке, который может легко взаимодействовать с веб-сокетами (например, java).

В этом суть моего вопроса: мне нужно извлечь поток h264 из RTSP в java, как я могу сделать это просто, но без вызова внешних программ?

...