Я много читал по этой теме, а также пробовал некоторые решения, но я имеют некоторые ограничения:
- независимость от браузера (большинство браузеров должны работать)
- независимость от платформы ( должны поддерживаться основные платформы)
- работает «из коробки» (без плагинов!)
- низкая задержка (предпочтительно менее 1 секунды)< /li>
пропускная способность ограничена (MJPEG не поддерживается) - нет перекодирования!
< /ol>
Итак, в дальнейшем: поток H264 кажется идеальным для ограничений 1 и 2.
Кроме того, мой источник создает прямую трансляцию H264 (точнее: MPEG-4 AVC, часть 10) в RTSP-контейнер.
Но RTSP по-прежнему не поддерживается в браузере.
Что я проверил:
- Как встроить потоковое мультимедиа rtsp в страница html5
- Как отобразить видеопоток RTSP на веб-странице?
- транслировать RTSP на веб-сайт HTML
- Отображение RTSP на веб-сайте.
- Потоковая передача RTSP на веб-сайт HTML.
- Как получить поток RTSP через веб-приложение.
- Решение RTSP для JavaScript/HTML5
- Потоковая передача через RTSP или RTP в HTML5
Также я прочитал очень хорошую статью 2014 года (!), которая подробно и весьма перспективно.
Итак, на сегодняшний день лучшим решением будет следующее: - проанализировать RTSP и извлечь поток h264
- реструктурировать поток (конвертировать его во фрагментированный MP4)
- websocket (см. позже)
- fMP4 можно легко воспроизводить с помощью HTML5-видео, если в браузере есть MSE (альтернатива — использовать Broadway.js, это круто, но требует большого количества ресурсов процессора).
В статье 2014 года показано, что шаг 2 также может выполняться на стороне клиента. В этом случае на сервере происходит только шаг 1, затем h264 передается в веб-сокет, а на стороне клиента, конечно же, происходит реструктуризация и отображение.
Streamedian кажется хорошее решение на первый взгляд, но они не публикуют свои серверные коды, а их сайт в течение дня возвращал ошибку 502.
Я не хочу использовать GStreamer или ffmpeg, они оба слишком тяжелые.
Однако есть хорошие вещи, которые могут помочь:
- MP4Box.js — сегментирование файла MP4 для использования с API расширения источника мультимедиа.
- mux.js — проверка и манипуляции. инструменты для видеофайлов
Шаг 3 и шаг 4 просты, по ним есть масса инструкций.
Однако меня немного озадачил шаг 1. Это должно быть сделано на стороне сервера, желательно на языке, который может легко взаимодействовать с веб-сокетами (например, Java).
В этом и суть моего вопроса: мне нужно извлечь поток h264 из RTSP в Java, как это сделать просто, но без вызова внешних программ?
Подробнее здесь: https://stackoverflow.com/questions/596 ... wser-html5