Да, эта топи c время от времени появляется и здесь, на SO.
Я много читал об этой топике c, а также пробовал некоторые решения, но у меня есть некоторые ограничения :
- независимость от браузера (большинство браузеров должны работать)
- независимость от платформы (должны поддерживаться основные платформы)
- работа "из коробки" ( без плагинов!)
- низкая задержка (предпочтительно ниже 1 se c)
- пропускная способность ограничена (MJPEG не поддерживается)
- без транскодирования!
Итак, вперед: поток H264 кажется идеальным для ограничений 1 и 2.
Также мой источник производит живой H264 (а точнее: MPEG-4) AV C, часть 10 ) в контейнер RTSP.
Но RTSP по-прежнему не поддерживается в браузере.
Что я проверял:
Все посты выше относятся к этому вопросу, и там было много ценной информации.
Также я прочитал очень хорошая статья от 2014 года (!), Которая детализирована и довольно перспективна.
Итак, на сегодняшний день лучшее решение будет таким:
- анализ RTSP и извлечение потока h264
- реструктуризация потока (преобразование его во фрагментированный MP4)
- websocket (см. Позже)
- 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, как я могу сделать это просто, но без вызова внешних программ?