Автор Тема: Работа с IP камерами видеонаблюдения  (Прочитано 6537 раз)

Оффлайн aleksey-v.

  • Давно тут
  • **
  • Сообщений: 124
Друзья, поискал на форуме, есть темы только за прошлые годы.

Что-нибудь есть в репозитории для подключения к IP камерам и просмотра потоков видео? То есть, оно должно поддерживать RTSP и/или ONVIF.

Оффлайн aleksey-v.

  • Давно тут
  • **
  • Сообщений: 124
Как промежуточный вариант - стандартный VLC умеет проигрывать RTSP. По одному файлу можно проигрывать или переключаться между потоками.
Но как несколько потоков с разных камер запустить одновременно непонятно.

Оффлайн berkut_174

  • Мастер
  • ***
  • Сообщений: 6 922
    • Email
zoneminder
Сноси Винду, переходи на Линукс ! :)

Оффлайн Mr.Madguy

  • Давно тут
  • **
  • Сообщений: 145
Простой вариант - открыть несколько VLC. VLC умеет практически все, что нужно. Записывать, конвертировать, ретранслировать. В теории можно наверное делать это автоматически с одним экземпляром VLC - при помощи VLM. Более сложный вариант - при помощи ffmpeg. В этом случае скорее всего можно определенным образом настроить nginx. Все готовые решения может и предоставляют более простой механизм настройки всего этого дела, но в большинстве своем все равно так или иначе используют ffmpeg.

Есть еще ламерский вариант сделать это по простому. Я лично не пробовал так делать, но в теории OBS позволяет вставлять на канву внешние видеопотоки, в том числе и из VLC. Прикол с OBS заключается в том, что там можно хоть в реальном времени произвольным образом раскидать все это по канве, добавить текст, картинки, фильтры, анимации и т.д. В общем полноценное решение. А потом или просто смотреть, что получилось. А можно и записывать или ретранслировать. Но процессор будет жрать на перекодирование очень сильно.

Оффлайн aleksey-v.

  • Давно тут
  • **
  • Сообщений: 124
А одновременно открыть несколько VLC можно? Как у Вас плучается?

Оффлайн berkut_174

  • Мастер
  • ***
  • Сообщений: 6 922
    • Email
А одновременно открыть несколько VLC можно? Как у Вас плучается?
снять флажки «разрешить только одну копию» и «ограничиться одной копией при запуске из менеджера файлов» в настройках (Ctrl+P) на вкладке «интерфейс»
Сноси Винду, переходи на Линукс ! :)

Оффлайн altuser55

  • Давно тут
  • **
  • Сообщений: 141
    • Email
не знаю на сколько это  поможет, не пробовал и в тему не вникал
https://habr.com/ru/post/518674/?utm_campaign=518674

Оффлайн Mr.Madguy

  • Давно тут
  • **
  • Сообщений: 145
Если надо выводить видео в браузер, как это делают другие готовые решения, то тут есть некоторые проблемы. Просто TS или MP4 через HTTP он кушать не хочет. RTSP он кушать не хочет. RTMP еще не пробовал, но тоже скорее всего кушать не будет. Получилось скормить только OGG (Theora + Vorbis). Для одновременной обработки произвольного количества таких потоков можно воспользоваться следующим скриптом vlm.conf:
new video1 broadcast enabled
setup video1 input rtsp://адрес вашей камеры
setup video1 output #transcode{vcodec=theo,vb=2500,scale=автоматически,acodec=vorb,ab=128,channels=2,samplerate=44100,scodec=none}:http{mux=ogg,dst=:8080/video1}
control video1 play

new video2...
По умолчанию, т.е. без параметра "vb=", качество видео получается очень плохое, хотя по идее должно использоваться качество оригинала. Его нужно подкрутить под свои нужды.

После этого можно вот так его запустить:
vlc.exe -I dummy --vlm-conf vlm.conf
А в браузере смотреть вот так:
<html>
  <body>
    <video src="http://127.0.0.1:8080/Video1"></video>
  </body>
</html>
Перекодирование это конечно не очень хорошо, т.к. если нет аппаратного ускорения, оно создает нагрузку на процессор. А если еще и нет аппаратного ускорения для отображения видео, что, как выяснилось, является большой проблемой в Linux, то это двойная проблема. У меня есть два одинаковых компьютера с одинаковыми видео-картами и под Windows 1080p видео не создает почти никакой нагрузки ни на процессор, ни на GPU, а вот под Linux я получаю примерно 30% нагрузки на одно видео. Единственное преимущество - нет тормозов, когда воспроизводятся сразу два 1080p видео, что аппаратное ускорение не тянет и начинает лагать, зато нагрузка на проц под Linux при этом доходит до 70%. Именно эта проблема и вынудила меня в итоге искать решение по подстройке размеров видео под размеры контейнера. Все равно два 1080p видео на экран сразу не влазят. Достаточно 540p.

Идеальным решением в данном случае является HLS. Но я все еще побаиваюсь его использовать. Сколько я не читаю описание этой технологии, все время вырисовывается такая картина, что там происходит непрерывное перекодирование видео на диск. А у меня не промышленный сервер с SSD RAID. У меня просто компьютер, у которого жесткий диск скорее всего помрет от постоянной высокой нагрузки.

Так что мое решение - статическое перекодирование 1080p видео в несколько наиболее популярных форматов 360p (1/3), 540p (1/2), 720p (2/3). Да, при этом жрется место на диске, зато прямой стриминг создает почти нулевую нагрузку на сервер.

UPD RTMP напрямую тоже не завелся.
« Последнее редактирование: 20.10.2020 08:59:53 от Mr.Madguy »