Предисловие:
Охранное оборудование теперь широко используется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
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