Я много читал об этой теме, а также пробовал некоторые решения, но у меня есть некоторые ограничения:
- независимость от браузера (должно работать большинство браузеров)
- независимость от платформы (должны поддерживаться основные платформы)
- работа готовый вариант (без плагинов!)
- низкая задержка (предпочтительно менее 1 секунды)
- пропускная способность ограничена (MJPEG не вариант)
- нет транскодирования!
Кроме того, мой источник создает живой 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 для использования с Media Source Extension API.
- mux.js — инструменты проверки и манипулирования видеофайлами.
Шаг 3 и шаг 4 просты, по ним есть масса инструкций.
Однако я немного озадачен шагом 1. Это должно быть сделано на стороне сервера, желательно на языке, который может легко взаимодействовать с веб-сокетами (например, Java).
В этом и суть моего вопроса: мне нужно извлечь поток h264 из RTSP в Java, как это сделать просто, но без вызова внешних программ?
Подробнее здесь: https://stackoverflow.com/questions/596 ... wser-html5
Мобильная версия