Видеоблогинг стал очень популярным в последнее время. Для одних это хобби, другие зарабатывают неплохие деньги, создавая качественный контент. Создание профессионального видеоконтента требует команды специалистов и дорогостоящего оборудования. Но азиатская компания придумала устройство, которое может заменить и то, и другое.
Они создали устройство отслеживания движений, которое работает в паре с любым смартфоном. Пользователь подключает свой телефон к устройству и запускает мобильное приложение. Приложение использует камеру телефона для фото- и видеосъемки. Приложение управляет устройством слежения с его широким набором функций. Пользователи могут выбирать камеры, менять режим слежения, выбирать положение фигуры в кадре, управлять яркостью и т.д.
Устройство отслеживания движения может вращаться на 360° по горизонтали и на 60° по вертикали. Мобильное приложение использует искусственный интеллект, чтобы распознавать объекты и следить за ними, управляя устройством. В режиме фокусировки на лицах устройство удерживает лицо человека в кадре. Режим следования за фигурой позволяет выбирать объект в кадре, чтобы камера следила за ним.
Устройство также имеет автоматический зум, автоматическое выравнивание, отслеживание прогнозируемого направления и многое другое.
Устройство актуально для видеоблогов, прямых трансляций и видеоконференций.
Запрос
У заказчика уже имелось готовое устройство и мобильное приложение. Ему требовалось десктопное приложение для macOS, которое могло бы получать видео- и аудио-данные из мобильного приложения, обрабатывать их и передавать на виртуальную камеру. Затем виртуальная камера должна отправлять видео и аудио в другие приложения.
Нашей задачей была разработка такого приложения. Еще одна задача заключалась в разработке видео- и аудио-драйверов macOS для виртуальной камеры. Драйверы должны были работать с широким спектром приложений и веб-сайтов, таких как Skype, Zoom, YouTube, Facebook и т.д.
Решение
Наша команда должна была выполнить три задачи: создать настольное приложение для macOS, а также разработать видео-драйвер и аудио-драйвер. Что касается настольного приложения, то на предыдущем этапе нашей совместной работы команда уже создала его версию для Windows с помощью C++ и JavaScript на платформе Electron.
Поскольку Electron — кроссплатформенный фреймворк, перенос приложения на maOS не составил труда. Нужно было лишь изменить подсистему интерфейса драйвера в приложении, чтобы она соответствовала новому API драйвера.
Вся система должна была работать следующим образом. Мобильное приложение на смартфоне управляет устройством отслеживания перемещений и отправляет мультимедийные данные (видео и аудио) в десктопное приложение по Wi-Fi. Приложение разделяет принимаемые потоки данных на видео и аудио. Затем данные отправляются на виртуальную камеру, которая, в свою очередь, подключается к приложению видео стриминга или веб-сайту.
Команда создала видео-драйвер, написав плагин виртуальной камеры DAL на платформе CoreMediaIO на языках Objective C и C++.
Плагин DAL служит виртуальной камерой, необходимой другим десктопным приложениям для потоковой передачи видео.
Драйвер позволяет настольному приложению управлять камерой, а именно яркостью, контрастностью, цветом, настройками видео и т.д. Аудио-драйвер был разработан на платформах CoreAudio и IOKit на языках Objective C и C++.
Установочные пакеты настольного приложения и драйверы для macOS были созданы в формате PKG.
Сложности проекта и их решение
Одна из проблем, с которой столкнулась команда, была связана с передачей видеоряда из десктопного приложения в плагин DAL. Для отправки видеокадров из приложения в плагин требовался специальный интерфейс. При работе с большими объемами данных передача не удавалась. Изначально команда хотела использовать буфер обмена PasteBoard, но возникла масса проблем, и было решено использовать соединение через сокет.
Еще одной проблемой была синхронизация потоков видео- и аудиоданных. Мы решили этот вопрос алгоритмически.
При разработке десктопного приложения мы столкнулись с некорректной работой демультиплексора. Также иногда видео не помещалось на экране. Обе эти проблемы были решены при разработке Windows-версии приложения.
Выполненные работы
Разработка macOS видео-драйвера
Разработка macOS аудио-драйвера
Разработка десктопного приложения
Использованные технологии
Electron
для сборки десктопного приложения.
C++ и TypeScript
для написания приложения.
Objective C и C++
для разработки видео- и аудио-драйверов.
CoreMediaIO
для реализации видео-драйвера.
CoreAudio и IOKit
для реализации аудио-драйвера.
Итоги
КЕДР Solutions разработала настольное приложение для macOS, а также видео- и аудио-драйверы для виртуальной камеры, чтобы приложение могло получать данные из мобильного приложения и передавать их в качестве стандартного видео другим приложениям и веб-сайтам.
Связаться с нами
Оставьте контактные данные, и мы свяжемся с вами в ближайшее время