alxndrlsn
@alxndrlsn
Инженер

Каким инструментом лучше организовать работу с IP-камерами на Qt?

Мне нужно собрать живые видео-потоки по RTSP с десятка-другого ip-камер, подключенных через Cisco(Hub)+MikroTik к компьютеру под ОС Debian-11 x64. C++ я знаю не так хорошо.

Поразмыслив, и полагая что "все уже написано до нас", я рассматриваю встроенные средства Debian, то есть сферическое ПО (ffmpeg+fserver, opencv, gstreamer или что-то иное...), способное распознавать, адресовать по RTSP и управлять ip-камерами, подключенными вышеуказанным способом. Кроме всего прочего, нуждаюсь в том, чтобы это сферическое ПО было доступно через API Qt Framework'а (QCamera, QWebEngine или иное Q...).

Поскольку перечисленное ПО (кандидаты), каждое само по себе, является весьма обширной темой, которую за один-два дня не осилить, то прошу рекомендаций: которого из перечисленных кандидатов взять за направление и, сосредоточившись на нем, попытаться преуспеть в ближайшем будущем?

Вашу рекомендацию прошу сопроводить кратким, но понятным аргументом.
  • Вопрос задан
  • 343 просмотра
Решения вопроса 1
alxndrlsn
@alxndrlsn Автор вопроса
Инженер
Все встало на свои места неожиданно: слегка разочаровавшись в QCamera, а также обнаружив, что ffserver больше не поддерживается с июля 2016 года,..

July 10th, 2016, ffserver program being dropped(с)ffmpeg.орг/индекс.html#ffserver

..смотрел похожие классы и через QVideoWidget вышел на QMediaPlayer, который, начиная с версии Qt 5.12.2, позволяет использовать gst-pipeline при установленном GStreamer. Иными словами, в методе QMediaPlayer::setMedia(QMediaContent) можно вставить строку QUrl, содержащую обычную команду для gstreamer:
что-то вроде этого (просто для примера):
player->setMedia(QUrl(gst-pipeline: rtspsrc location=rtsp://user:passwrd@StaticCameraIP:port/path ! rtph264depay !  h264parse ! omxh264dec ! nvvidconv ! video/x-raw, width=1920, height=1080, format=BGRx ! videoconvert !  ximagesink sync=false));

Работает хорошо, однако проверял в условиях цейтнота, поэтому столкнувшись с некоторым непонятным моментом, не нашел пока: как бороться с тем, что поток открывается в совершенно новом окне, игнорируя вызванный ранее QMediaPlayer::setVideoOutput(QVideoWidget). Возможно это потому, что у меня экземпляр QMediaPlayer не является дочерним по отношению к QVideoWidget. Но главное - работает!
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Zifix
@Zifix Куратор тега Qt
Barbatum
Мы лет шесть назад писали похожую штуку, тогда взяли libvlc, для неё есть Qt обвязка. Работало достаточно хорошо, насколько я помню. Но вот прям стандартных средств, чтобы управлять камерами — я тогда не нашел.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы