Russian Qt Forum
Март 28, 2024, 19:51 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Miracast (WiFi Display) RTP, RTSP  (Прочитано 6355 раз)
NoIdea
Новичок

Offline Offline

Сообщений: 12


Просмотр профиля
« : Октябрь 16, 2018, 17:08 »

Технологии не стоят на месте, наверное, за этим будущее - уже сейчас телевизоры, телефоны, а теперь и PC (Windows 10) поддерживают эту технологию.

А что с отдельными программами?
Кто-нибудь уже реализовывал в своих приложениях для стрима видео?

В основе всё тот же RTSP, для которого в большинстве случаев используют GStreamer:
https://gstreamer.freedesktop.org/data/doc/gstreamer/head/qt-gstreamer/html/examples.html

С удивлением обнаружил, что Qt, вроде как, умеет стримить "из коробки" для любого приложения:
https://code.woboq.org/qt5/qtbase/src/plugins/platforms/openwfd/
Код
Bash
./helloworld -platform openwfd
Как использовать? Это работает?...
(https://stackoverrun.com/ru/q/5871760)

На сколько понял, реализация в Qt основана на старом, не поддерживаемом проекте:
https://www.freedesktop.org/wiki/Software/openwfd/
Уже есть реинкарнация:
https://github.com/albfan/miraclecast

Ещё натыкался на реализацию от Intel:
https://github.com/intel/wds

« Последнее редактирование: Октябрь 16, 2018, 21:32 от NoIdea » Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #1 : Октябрь 17, 2018, 07:32 »

Не уверен что вполне понимаю о чем Вы, предполагаю речь идет о захвате видео/аudio с внешних устройств. Мой интерес чуть другой - чтение/запись видео и захват его с экрана, но технология видимо та же. Да, GStreamer. Долго я пытался отвертеться, пытались нанять человека, но увы  Плачущий Пришлось самому. Впечатления

- многое можно сделать просто командной строкой или ее аналогом в runtime. Богатый набор кодеков, рулить ими научиться несложно. Вообще все очень солидно. "Собирать" самому хотя и можно, но не советуют, предоставляют готовые сборки, очень приятно.

- но если где-то заклинило - решение может оказаться весьма сложным, а то и вообще не найтись. Дока хотя и обильная, но реальных примеров - раз-два и обчелся. Чистый "С" (написано без плюсов) изрядно бьет по ушам. Спрашивать на ихнем mailist - шансов на ответ мало.  
Записан
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #2 : Октябрь 17, 2018, 13:16 »

У gstreamer не все кодеки аппаратные. Зависит от платформы. Оно более-менее работает в Linux, где для разных видео-карт (или ембеддед железок) сразу в дистрибутиве и gstreamer-овские кодеки для них идут (там где есть аппаратное кодирование). Но если gstreamer нужен для Windows - то нужно очень хорошо постараться чтобы оно заработало с аппаратными кодеками (их надо компилять из отдельных проектов, используя Intel/NVidia SDK и прочую фигню, как мне объясняли, я просто в итоге забил). Под андройд тоже кодеков может не быть.

Мы делали некий проект с передачей некоей двигающейся картинки на удаленный дисплей в режиме "реалтайма", т.е. почти без задержек, картинка передавалась по изменениям, а не с каким-то определенным фрейм-рейтом, через WiFi.

В итоге получилась хрень, т.к. часто возникали артефакты от кодирования и потери кадрови прочая гадость...  Да и сас WiFi еще та какашка. Еще и кодеки не все нормально настраиваемые там.. более менее софтварный x264 там можно поднастроить... Но если аппаратные, да еще для разных платформ - то фигвам Улыбающийся

ЗЫ: А мож руки у меня кривые.

ЗЫЗЫ: Но как бы там ни было, но ИМХО, альтернативы у gstreamer нету.
« Последнее редактирование: Октябрь 17, 2018, 13:19 от kuzulis » Записан

ArchLinux x86_64 / Win10 64 bit
NoIdea
Новичок

Offline Offline

Сообщений: 12


Просмотр профиля
« Ответ #3 : Октябрь 18, 2018, 20:39 »

У Windows 10 при стриме 1080p на телевизор (виртуальный дисплей) через Miracast, это занимает не более 5% CPU и ~8Mbit WiFi хотелось бы сопоставимой производительности, но похоже, что с gstreamer всё не так просто (раз нет аппаратных кодеков под Windows), как и с Miracast (бывают аппаратные ограничения WiFi).

OFFTOP:
А текущую задачу со стримом возможно получится решить и как-то проще через генерацию и отправку JPEG:
https://libjpeg-turbo.org
https://github.com/roehrdor/opencl-jpeg-encoder
Или это дохлый номер?... Просто есть вероятность, что принимающая сторона (аппаратная) сможет принять только JPEG кадры, но боюсь даже представить какого FPS и нагрузки удастся в этом случае добиться.


Вот ещё наткнулся на интересный проект со стримом:
https://github.com/obsproject/obs-studio

Там даже есть аппаратные кодеки, стримит в огромное количество web-сервисов (WebRTC, RTMP)
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #4 : Октябрь 19, 2018, 08:00 »

У Windows 10 при стриме 1080p на телевизор (виртуальный дисплей) через Miracast, это занимает не более 5% CPU и ~8Mbit WiFi хотелось бы сопоставимой производительности, но похоже, что с gstreamer всё не так просто (раз нет аппаратных кодеков под Windows), как и с Miracast (бывают аппаратные ограничения WiFi).
Что там есть или нет - лучше проверить самому, это написания кода не требует. Скачайте и установите GStreamer. Подберите нужные кодеки/модули используя утилиту gst-inspect. Потом запустите цепочку этих модудей утилитой gst-launch направив выход на экран (playbin) или в файл (filesink). Примеры работы с командной строкой найдете, на худой конец есть маны.   

Или это дохлый номер?... Просто есть вероятность, что принимающая сторона (аппаратная) сможет принять только JPEG кадры, но боюсь даже представить какого FPS и нагрузки удастся в этом случае добиться.
Могу только сказать что такой "контейнер" (jpеg анимация) существует давно и используется многими
Записан
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #5 : Октябрь 19, 2018, 09:31 »

> Скачайте и установите GStreamer. Подберите нужные кодеки/модули используя утилиту gst-inspect

Нет там аппаратных кодеков для Windows!
Записан

ArchLinux x86_64 / Win10 64 bit
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #6 : Октябрь 19, 2018, 10:40 »

> Скачайте и установите GStreamer. Подберите нужные кодеки/модули используя утилиту gst-inspect

Нет там аппаратных кодеков для Windows!
Даже если и так - лучше убедиться в этом самому Улыбающийся. И откуда такая уверенность? Навксидку гуглим напр "GStreamer rtsp windows" - совсем не пусто. Пусть товарищ изучает
Записан
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #7 : Октябрь 19, 2018, 12:54 »

> И откуда такая уверенность?

Оттуда что я уже ранее этим заморачивался. Gstreamer-овское SDK для Windows не содержит никаких аппаратных кодеков. Их нужно искать и компилять самому под конкретную видеокарту.
Записан

ArchLinux x86_64 / Win10 64 bit
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.067 секунд. Запросов: 23.