Pull to refresh
20
8
Радионов Сергей@RSATom

Разработчик ПО

Send message

Сказ о том как я пилил велосипед для домашнего видеонаблюдения. Часть вторая, технологическая

Level of difficultyEasy
Reading time5 min
Reach and readers3.3K

В предыдущей части я привел ретроспективу эволюции своего подхода к созданию домашней системы видеонаблюдения. Финальным результатом этой эволюции стала идея создания собственного протокола для передачи видео потоков на основе WebRTC. О технических деталях этого протокола я и попытаюсь рассказать в этой части.

Читать далее

Сказ о том как я пилил велосипед для домашнего видеонаблюдения. Часть первая, историческая

Level of difficultyEasy
Reading time6 min
Reach and readers8.3K

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

Читать далее

Как подружить QML с чужим OpenGL контекстом. Часть III: Обработка пользовательского ввода

Reading time3 min
Reach and readers6.4K
В данной статье я попытаюсь рассказать о том как передавать события мыши и клавиатуры в QQuickWindow, в случае его использования в связке с QQuickRenderControl. Причиной того, что этому необходимо уделять специальное внимание, является то, что в случае использования QQuickRenderControl, никакого окна на самом деле не создается, соответственно у QQuickWindow нет абсолютно никакой возможности получать какие либо события, и их приходится эмулировать. То же самое касается изменения размеров — об этой операции так же необходимо оповещать в явном виде.
Читать дальше →

Как подружить QML с чужим OpenGL контекстом. Часть II: Загружаем QML

Reading time3 min
Reach and readers7.1K
В данной статье я попытаюсь рассказать о том как загружать QML в случае, если у вас, по какой-то причине, нет возможности использовать QQuickView, а необходимо работать непосредственно с QQuickWindow.
В моем случае, таковой причиной являлось то, что с QQuickRenderControl умеет работать только QQuickWindow. В вашем же случае, таковой причиной может быть например то, что вам понадобилось загружать QML не из какого либо файла, а например из памяти, что открывает возможность генерации QML «на лету», или запроса содержимого QML, или его части, у пользователя — занятно, не так ли?
Читать дальше →

QQuickRenderControl, или как подружить QML с чужим OpenGL контекстом. Часть I

Reading time5 min
Reach and readers18K
Недавний релиз Qt 5.4, помимо прочего, предоставил в распоряжение разработчиков один, на мой взгляд, очень любопытный инструмент. А именно, разработчики Qt сделали QQuickRenderControl частью публичного API. Занятность данного класса заключается в том, что теперь появилась возможность использовать Qml в связке с любым другим фреймворком, если он предоставляет возможность получить (или задать) указатель на используемый OpenGL контекст.
С другой стороны, в процессе работы над одним из своих проектов, я столкнулся с необходимостью отрисовывать QML сцену на CALayer (Mac OS X), без малейшей возможности получить доступ к родительскому окну. Недельный поиск возможных вариантов решения проблемы показал, что самым адекватным решением будет как раз использование QQuickRenderControl из Qt 5.4, благодаря удачному совпадению, получившего статус релиза одновременно с возникновением вышеупомянутой задачи.
Изначально я предположил что задача плевая, и будет решена в течении пары вечеров, но как же я сильно заблуждался — задача заняла порядка полумесяца на исследования, и еще пол месяца на реализацию (которая все еще далека от идеала).
Читать дальше →

Простой способ подключения произвольного видеоисточника в Qml

Reading time4 min
Reach and readers9.9K

Преамбула


Все нижеизложенное приводится в контексте Qt версии 5.3.1 (как наиболее актуальной на данный момент), но имеет смысл в контексте любой версии ветки 5.x, а возможно даже 4.8.x (не проверял за ненадобностью).

Операционная система — Windows, среда разработки — QtCreator 3.1.2 в связке с MinGW и gcc 4.8.2 От использования других платформ/IDE/компиляторов суть не меняется.

В качестве иточника видеоданных был выбран самый простой из доступных вариантов, а именно — рабочий стол. Т.е. приложение будет отображать копию всего что происходит на рабочем столе. В многомониторных конфигурациях, в качестве источника, будем использовать основной экран.
Читать дальше →

Information

Rating
740-th
Date of birth
Registered
Activity