Эмуляция камер
На устройствах ОС Аврора имеется одна или несколько камер. Эмулятор ОС Аврора может имитировать работу с камерой. Средствами Аврора IDE можно запустить мастер управления эмуляцией, задать в качестве данных камеры видеофайл в формате .webm и проверить работу программы с камерой.
- Управление эмуляцией камер в Аврора IDE
- Работа с камерой в приложении
- Команды для проверки работы GStreamer
Управление эмуляцией камер в Аврора IDE
Для работы с эмулятором камер следует использовать раздел Камера. Данный раздел содержит:
- переключатели для выбора источника данных (камеры хост-машины или видеофайла);
- текущие настройки камеры и элементы для выбора камеры, разрешения и частоты кадров из списков;
- кнопки Установить настройки, Обновить список камер и Запустить для управления камерой;
- поле для выбора и загрузки видеофайла;
- кнопки Запустить и Остановить для запуска и остановки передачи видеопотока.
Передача видеопотока из выбранного видеофайла
Видеофайл для демонстрации передачи видеопотока доступен по ссылке. Файл содержит пятисекундное видео с QR-кодом, ведущим на портал разработчиков.
Для запуска передачи потока данных из видеофайла, необходимо выбрать пункт Видеофайл в разделе Источник, нажать на кнопку ... рядом с текстовым полем Видеофайл. Откроется диалоговое окно для выбора файлов. Для передачи данных поддерживаются файлы, закодированные в VP9, с расширением .webm.
После выбора конкретного файла будет запущен процесс передачи потока данных на эмулятор. Передача видеопотока из файла будет выполняться циклически, т. е. по окончанию передачи данных из файла процесс будет запущен снова.
Для остановки процесса передачи видеоданных необходимо нажать кнопку Остановить. Для возобновления процесса передачи необходимо нажать кнопку Запустить.
Работа с камерой в приложении
В проекте для работы с камерой можно использовать компонент QML Camera, класс C++ QCamera и другие классы и компоненты QtMultimedia.
Подробнее о работе с камерой можно прочитать в документации Qt.
Команды для проверки работы GStreamer
Если для эмуляции требуется использовать камеру у компьютера разработчика, но при старте плагина эмуляции камера не найдена автоматически, или в процессе запуска возникает ошибка, можно использовать команды из следующих разделов для диагностики работы камеры.
Следует отметить, что для эмуляции поддерживаются все камеры,
с которыми работает фреймворк GStreamer.
Диагностика производится с помощью команды gst-launch-1.0
.
Команды для Windows
Для выполнения проверки работы камеры под Windows следует выполнить следующие действия:
В консоли PowerShell вывести отфильтрованный список устройств:
gst-device-monitor-1.0.exe Video/Source | Select-String -Pattern "ksvideosrc device.path"
Например, ответ может содержать следующую информацию о пути к файлам устройств:
gst-launch-1.0 ksvideosrc device-path="\\\\\?\\usb\#vid_046d\&pid_0825\&mi_00\#7\&1e2afdec\&0\&0000\#\{6994ad05-93ef-11d0-a3cc-00a0c9223196\}\\global" ! ...
gst-launch-1.0 ksvideosrc device-path="\\\\\?\\usb\#vid_0bda\&pid_565c\&mi_00\#6\&a611cca\&0\&0000\#\{6994ad05-93ef-11d0-a3cc-00a0c9223196\}\\global" ! ...
Далее выполнить команду gst-launch-1.0
для проверки запуска веб-камеры,
указав путь к файлу устройства.
Встроенная камера:
gst-launch-1.0 ksvideosrc device-path="\\\\\?\\usb\#vid_0bda\&pid_565c\&mi_00\#6\&a611cca\&0\&0000\#\{6994ad05-93ef-11d0-a3cc-00a0c9223196\}\\global" ! videoconvert ! autovideosink
Внешняя USB-камера:
gst-launch-1.0 ksvideosrc device-path="\\\\\?\\usb\#vid_046d\&pid_0825\&mi_00\#7\&1e2afdec\&0\&0000\#\{6994ad05-93ef-11d0-a3cc-00a0c9223196\}\\global" ! videoconvert ! autovideosink
Команды для Linux
Для выполнения проверки работы камеры на Ubuntu или Alt Linux следует выполнить следующие действия:
Установить пакет для работы с утилитой v4l2-ctl
, если он не был установлен ранее:
sudo apt-get install v4l-utils
Вывести список доступных камер и ссылок на файлы их устройств. Например:
v4l2-ctl --list-devices
Например, ответ может содержать следующую информацию о пути к файлам устройств:
C270 HD WEBCAM (usb-0000:00:14.0-2.4):
/dev/video2
/dev/video3
/dev/media1
Integrated_Webcam_HD: Integrate (usb-0000:00:14.0-6):
/dev/video0
/dev/video1
/dev/media0
В данном случае, встроенная камера — это устройство /dev/video0, внешняя USB-камера — устройство /dev/video2.
И протестировать камеру, указав путь к файлу устройства:
Встроенная камера:
gst-launch-1.0 v4l2src device=/dev/video0 ! videoconvert ! autovideosink
Внешняя USB-камера:
gst-launch-1.0 v4l2src device=/dev/video2 ! videoconvert ! autovideosink
Команда в случае успеха должна запустить камеру в отдельном окне на компьютере разработчика и вывести сообщение, например:
Установка конвейера в состояние PAUSED…
Конвейер работает и не требует состояния PREROLL…
Конвейер подготовлен (PREROLLED)…
Установка конвейера в состояние PLAYING…
New clock: GstSystemClock
Команды для MacOS
Проверить работу камеры на MacOS можно с помощью команды:
gst-launch-1.0 avfvideosrc ! autovideosink
Пример вывода:
Установка конвейера в состояние PAUSED…
Конвейер работает и не требует состояния PREROLL…
Установка конвейера в состояние PLAYING…
New clock: GstSystemClock
^Chandling interrupt.
Прерывание: Остановка конвейера…
Execution ended after 0:00:11.129066355
Установка конвейера в состояние NULL…
Освобождение конвейера…