Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: juvf от Октябрь 26, 2021, 13:24



Название: Видео по сети
Отправлено: juvf от Октябрь 26, 2021, 13:24
Есть железка cpu+cam+screen

Написал Требуется написать программу отображения видео с камеры на экране в режиме онлайн. В Qt/QML с этим не должно возникнуть проблем. Но, в программе отделил мух от котлет GUI от "backend" и соединил их через сокет udp/localhost.
Теперь GUI могу запустить на любом ПК в офисе сети. Backend со всем своим специфичным железом может продолжать работать на целевом таргите на конечном устройстве.

Вопрос: как через локалхост пробросить видеопоток? Думаю тоже использовать udp. Можно как-нибудь средствами Qt/QML (QtMultimedia/QMediaPlayer/QVideoWidget) по udp пробросить трансляцию с камеры на удаленный ПК/GUI? Или придется свой велосипед изобретать?




Название: Re: Видео по сети
Отправлено: Igors от Октябрь 26, 2021, 13:38
Возможно стоит покопаться в GStreamer (на уровне командной строки). Удовольствие ниже среднего, но шансы есть. Если получится из командной строки - остальное уже "дело техники". Привлекает что можно назначить "источник" в виде URL (там как-то чуть иначе называется, уже забыл), а он разберется с драйверами и.т.п.


Название: Re: Видео по сети
Отправлено: kuzulis от Октябрь 26, 2021, 21:29
Плюсую за г-стример, там не особо сложно. Но там надо выбирать спецом кодеки, для которых есть аппаратная поддержка, чтобы не грузить ЦПУ (ЕМНИП - в Gst SDK только софтварные кодеки идут).


Название: Re: Видео по сети
Отправлено: kambala от Октябрь 26, 2021, 22:59
а чем GStreamer лучше ffmpeg? последний слишком низкоуровневый?


Название: Re: Видео по сети
Отправлено: Johnik от Октябрь 26, 2021, 23:40
не qt, но для web'a использовал этот проект:
https://github.com/mpromonet/webrtc-streamer


Название: Re: Видео по сети
Отправлено: juvf от Октябрь 27, 2021, 07:28
мдааа.... пуре qt не вкатит. Надеялся, что в качестве получателя/источника видео можно будет указать QIODevice (который есть udp сокет). Пока оставлю и камеру и отображение в слое GUI. Будет время сильная необходимость, перенесу камеру в бэкэнд.

Возможно стоит покопаться в GStreamer (на уровне командной строки).
Заинтересовало.... А почему на уровне cli? Вроде есть родные мануалы с примерами на си. Более того, нашел даже QtGStreamer (https://github.com/GStreamer/qt-gstreamer) с тёплоламповым qml-ем
 


Название: Re: Видео по сети
Отправлено: Igors от Октябрь 27, 2021, 08:44
Заинтересовало.... А почему на уровне cli? Вроде есть родные мануалы с примерами на си. Более того, нашел даже QtGStreamer (https://github.com/GStreamer/qt-gstreamer) с тёплоламповым qml-ем
Может и в базовых примерах есть, мне он был нужен для другого. Но ихнюю "концептуальную" доку лучше отложить на потом (бьет по ушам). В любом случае нужно "смонтировать" pipeline, грубо говоря цепочку кодеков, и это удобно из командной строки. Напр назначил (пока) стандартный вывод видео - и заниматься источником


Название: Re: Видео по сети
Отправлено: qate от Октябрь 27, 2021, 21:45
подобная задача решается созданием http потока, где после http заголовков идет jpg данные
на приеме поток успешно отображает браузер или свой qt код, где создается QPixmap

webrtc-streamer смотрелся недолго - до упоминаний chromium - тут жир стал капать с монитора )


Название: Re: Видео по сети
Отправлено: Johnik от Октябрь 28, 2021, 15:20
webrtc-streamer смотрелся недолго - до упоминаний chromium - тут жир стал капать с монитора )
С ним с единственным относительно просто было, и задержка видео была минимальной.


Название: Re: Видео по сети
Отправлено: qate от Октябрь 28, 2021, 18:29
мое простое решение также не имеет задержек


Название: Re: Видео по сети
Отправлено: juvf от Октябрь 29, 2021, 06:05
мое простое решение также не имеет задержек
пример?