rtsp получает видеопоток java_browser воспроизводит видеопоток rtsp без плагина java background + js + html
rtsp получает видеопоток java_browser воспроизводит видеопоток rtsp без плагина java background + js + html

Предисловие:

Охранное оборудование теперь широко используетсяrtspтянутьвидеопоток,Воспроизведение потока rtspvideo на веб-странице невозможно напрямую.,html не поддерживает поток rtspvideo, Поэтому его необходимо преобразовать в данные кадра, которые можно проанализировать с помощью HTML5, а затем воспроизвести в браузере. Для длинных соединений, передающих потоки данных, многие в Интернете используют http-websocket, разработанный node.js, используя Java в качестве ссылки. + netty Этот этап преобразования был выполнен. Здесь вы должны понимать разницу между http и WS и почему вам следует перейти на WS. Суть этой статьи — конвертировать http в ws+. js отображение рамки страницы.

принцип:

ffmpeg может конвертировать видеопотоки rtsp в данные кадра во многих форматах. Эти данные передаются на задний план в виде длинного http-соединения, а фон преобразуется в поток данных WS, который может воспроизводиться браузером. Браузер извлекает каждый кадр через js, анализируя протокол WS, и отображает его. Большинство идей в Интернете тоже такие, здесь используем

Этапы работы

1. Установите ffmpeg. Для его вызова можно использовать java, в Интернете есть много случаев, и инкапсулированные библиотеки тоже очень удобны, поэтому я не буду их здесь перечислять.

ffmpeg -rtsp_transport tcp -i “rtsp://admin:guide123@192.168.1.190:554/” -q 0 -buffer_size 1024000 -max_delay 500 -f rawvideo -codec:v libx264 -preset ultrafast http://127.0.0.1:8081/supersecret/live3

Вот основные моменты оптимизации:

a. Протокол ffmpeg-to-tcp не будет терять кадры, но неизбежно возникнет большая задержка, когда сеть будет плохо работать.

б. Команда -preset ultrafast может значительно уменьшить задержку и оказать определенное влияние на качество изображения.

2. Фоновая служба Java, создание платформы netty, обновление http-соединения, передаваемого ffmpeg, до длинного соединения Websocket (WS), трансляция полученного сообщения WS указанному пользователю (трансляция через параметры или путь соединения браузера), см. rtsp+ ffmpeg+ netty + jsmpeg.

3. Внедрите wfs.js и настройте его под свои нужды. На раннем этапе параметры не были настроены должным образом и скорость чтения кадров не была настроена должным образом (_this.H264_TIMEBASE = 3000), что приводило к скачкам кадров. Обратитесь к github для точной настройки, от большого к меньшему и найдите наиболее подходящее значение.

4. Напишите страницу для воспроизведения:

h.264 To fmp4

h.264 To fmp4

window.onload = function () {

if (Wfs.isSupported()) {

var video1 = document.getElementById(“video1”),

wfs = new Wfs();

wfs.attachMedia(video1,’ch1′);

}

};

Подведены итоги нескольких областей, требующих внимания и оптимизации:

1. Задержка воспроизведения становится все выше и выше, ее можно регулировать, регулируя скорость воспроизведения. Если проблема не может быть решена, регулярно изменяйте player.currentTime = текущий прогресс загрузки видео, чтобы решить проблему, что эквивалентно нажатию клавиши быстрой перемотки вперед и перемещению индикатора выполнения под проигрывателем.

2. Видео может быть приостановлено после уменьшения размера браузера. При повторном открытии браузера необходимо следовать методу 1, указанному выше. .

3. Кэш браузера становится все больше и больше, а видео наблюдения воспроизводится 24 часа в сутки, поэтому через некоторое время браузер обязательно выйдет из строя. Решение состоит в том, чтобы регулярно открывать новое видеосоединение (это занимает 30 минут) и заменять старое видеосоединение. Это эквивалентно тайному изменению соединения воспроизведения страницы для пользователя. Обратите внимание на разницу во времени между новым и старым видео. Ожидается, что новое видео будет воспроизводиться плавно, а затем старый видеопоток можно будет заменить и закрыть, чтобы обеспечить плавный переход.

Заявление об авторских правах: Содержание этой статьи добровольно предоставлено пользователями Интернета, а мнения, выраженные в этой статье, представляют собой только точку зрения автора. Этот сайт предоставляет только услуги по хранению информации, не имеет никаких прав собственности и не принимает на себя соответствующие юридические обязательства. Если вы обнаружите на этом сайте какое-либо подозрительное нарушение авторских прав/незаконный контент, отправьте электронное письмо, чтобы сообщить. После проверки этот сайт будет немедленно удален.

Издатель: Full stack программист и руководитель стека, укажите источник для перепечатки: https://javaforall.cn/183415.html Исходная ссылка: https://javaforall.cn

boy illustration
Учебное пособие по Jetpack Compose для начинающих, базовые элементы управления и макет
boy illustration
Код js веб-страницы, фон частицы, код спецэффектов
boy illustration
【новый! Суперподробное】Полное руководство по свойствам компонентов Figma.
boy illustration
🎉Обязательно к прочтению новичкам: полное руководство по написанию мини-программ WeChat с использованием программного обеспечения Cursor.
boy illustration
[Забавный проект Docker] VoceChat — еще одно приложение для мгновенного чата (IM)! Может быть встроен в любую веб-страницу!
boy illustration
Как реализовать переход по странице в HTML (html переходит на указанную страницу)
boy illustration
Как решить проблему зависания и низкой скорости при установке зависимостей с помощью npm. Существуют ли доступные источники npm, которые могут решить эту проблему?
boy illustration
Серия From Zero to Fun: Uni-App WeChat Payment Practice WeChat авторизует вход в систему и украшает страницу заказа, создает интерфейс заказа и инициирует запрос заказа
boy illustration
Серия uni-app: uni.navigateЧтобы передать скачок значения
boy illustration
Апплет WeChat настраивает верхнюю панель навигации и адаптируется к различным моделям.
boy illustration
JS-время конвертации
boy illustration
Обеспечьте бесперебойную работу ChromeDriver 125: советы по решению проблемы chromedriver.exe не найдены
boy illustration
Поле комментария, щелчок мышью, специальные эффекты, js-код
boy illustration
Объект массива перемещения объекта JS
boy illustration
Как открыть разрешение на позиционирование апплета WeChat_Как использовать WeChat для определения местонахождения друзей
boy illustration
Я даю вам два набора из 18 простых в использовании фонов холста Power BI, так что вам больше не придется возиться с цветами!
boy illustration
Получить текущее время в js_Как динамически отображать дату и время в js
boy illustration
Вам необходимо изучить сочетания клавиш vsCode для форматирования и организации кода, чтобы вам больше не приходилось настраивать формат вручную.
boy illustration
У ChatGPT большое обновление. Всего за 45 минут пресс-конференция показывает, что OpenAI сделал еще один шаг вперед.
boy illustration
Copilot облачной разработки — упрощение разработки
boy illustration
Микросборка xChatGPT с низким кодом, создание апплета чат-бота с искусственным интеллектом за пять шагов
boy illustration
CUDA Out of Memory: идеальное решение проблемы нехватки памяти CUDA
boy illustration
Анализ кластеризации отдельных ячеек, который должен освоить каждый&MarkerгенетическийВизуализация
boy illustration
vLLM: мощный инструмент для ускорения вывода ИИ
boy illustration
CodeGeeX: мощный инструмент генерации кода искусственного интеллекта, который можно использовать бесплатно в дополнение к второму пилоту.
boy illustration
Машинное обучение Реальный бой LightGBM + настройка параметров случайного поиска: точность 96,67%
boy illustration
Бесшовная интеграция, мгновенный интеллект [1]: платформа больших моделей Dify-LLM, интеграция без кодирования и встраивание в сторонние системы, более 42 тысяч звезд, чтобы стать свидетелями эксклюзивных интеллектуальных решений.
boy illustration
LM Studio для создания локальных больших моделей
boy illustration
Как определить количество слоев и нейронов скрытых слоев нейронной сети?
boy illustration
[Отслеживание целей] Подробное объяснение ByteTrack и детали кода