LINUX.ORG.RU

поднять свой RTSP-сервер

 ,


0

3

Всем привет! Мне необходимо сделать следующее

  • получить rtsp поток с камеры
  • отрисовать на кадрах из него некие элементы
  • отдать новый поток снова в rtsp виде

С первыми 2 пунктами я справился, но возникла проблема с тем, как самому стримить видео по RTSP. Так как я пишу на python то взял за основу либу https://github.com/prabhakar-sivanesan/OpenCV-rtsp-server. Все работает хорошо до тех пор, пока к моему потоку не пытается подключиться второй клиент: в этом случае либо виснет у всех, либо видео только у второго клиента.

Какое ПО или python-либу можно использовать в linux чтобы туда пулять фреймы, а потом оно собирало поток для юзеров?



Последнее исправление: Andreezy (всего исправлений: 1)

Ответ на: комментарий от cobold

Может и достаточно, но мне не очень ясно, куда мне из python-кода закидывать фреймы, чтобы ffmpeg их подхватывал в режиме реального времени и стримил

Andreezy
() автор топика
Последнее исправление: Andreezy (всего исправлений: 1)
Ответ на: комментарий от cobold

ffmpeg умеет накладывать текст и картинки поверх видео потока

Ок, но логика то все равно в питоне. Есть фреймворк YOLO, который умеет детектить авто. Я хочу отрисовать на кадре bbox авто и выдать снова rtsp поток.

Andreezy
() автор топика
Ответ на: комментарий от cobold

А просто ffmpeg для этого не достаточно?

раньше был ffserver, но он уже 6 лет не поддерживается. Публикация Rstp-потока достаточно сложная штука и в виде плагина к ffmpeg не реализована.

Успешную публикациюю удавалось сделать через gst-rtsp-server (к gstreamer из python вызвается через GObject introspection.

Может за последние года 3 что-то ещё новое/высокоуровневое придумали

GPFault ★★
()
Ответ на: комментарий от cobold

Я пытаюсь решить проблему через v4l2loopback, но не понимаю почему он мне дает создать только 1 виртуальное устройство, хотя заявлено что там можно создать больше

modprobe v4l2loopback devices=5

ls -1 /sys/devices/virtual/video4linux
video0
Andreezy
() автор топика
Последнее исправление: Andreezy (всего исправлений: 1)
Ответ на: комментарий от futurama

Привет! Создал устройство с помощью mknod. Теперь в системе 2 устройства

  • /dev/video0
  • /dev/video1

И я пишу в каждый из них свои потоки

Но при попытке проиграть(ffplay /dev/video0, ffplay /dev/video1) происходит какая-то дичь. Я в потоках вижу вперемешку кадры с обоих потоков. В коде я проверил - в каждый виртуальный видеофайл летят свои потоки, а на выходе просто непойми что

Andreezy
() автор топика
Последнее исправление: Andreezy (всего исправлений: 1)