Программирование ARM man v4l2-ctl Wed, October 08 2025  

Поделиться

Нашли опечатку?

Пожалуйста, сообщите об этом - просто выделите ошибочное слово или фразу и нажмите Shift Enter.


man v4l2-ctl Печать
Добавил(а) microsin   

v4l2-ctl - приложение для управления драйверами video4linux.

SYNOPSIS

v4l2-ctl [-h] [-d < dev>] [множество других опций]

[Описание]

Утилита v4l2-ctl используется для управления драйверами video4linux: video, vbi, radio или swradio, на ввод и вывод. Она способна управлять практически любым аспектом таких устройств, охватывающим полный API V4L2.

Состояние выхода: при успешном завершении возвратит 0, иначе будет возвращен код ошибки.

[Опции]

-d, --device < dev>

Использовать < dev> в качестве устройства V4L2. Если < dev> начинается с цифры, то используется /dev/video< dev>. Иначе если было ранее указано -z, то < dev> это имя объекта или идентификатор интерфейса (если с префиксом 0x), который находится в топологии коммуникационного устройства со строкой информации шины, как указано параметром -z. Таким образом, следующие 2 команды эквивалентны:

v4l2-ctl -d /dev/video0 --stream-mmap --stream-to=/dev/null --stream-count=1000
v4l2-ctl -d 0 --stream-mmap --stream-to=/dev/null --stream-count=1000

-v, --verbose

Включить подробный вывод сообщений.

--version

Показать версию.

-w, --wrapper

Использовать библиотеку обертки libv4l2 для всех обращений к устройству V4L2 по умолчанию. v4l2-ctl напрямую осуществляет доступ к к устройству V4L2, но с этой опцией весь доступ происходит через эту библиотеку обертки.

libv4l2 - это библиотека-обертка, которая предоставляет дополнительные возможности и решает различные проблемы при работе с Video4Linux2 (V4L2). Вот ее основные назначения:

1. Преобразование форматов пикселей. Прозрачно конвертирует экзотические или проприетарные форматы в стандартные:

// Без libv4l2 - только родные форматы устройства
ioctl(fd, VIDIOC_QBUF, &buffer);

// С libv4l2 - автоматическая конвертация форматов v4l2_ioctl(fd, VIDIOC_QBUF, &buffer);

2. Реализация отсутствующих ioctl. Добавляет эмуляцию для ioctl, которые не поддерживаются устройством: без libv4l2: VIDIOC_S_CROP может не работать. С libv4l2 эмулируется функционал cropping.

3. Исправление багов драйверов. Обходит известные ошибки в драйверах различных устройств.

[Практическое использование]

Через переменную окружения. Приложения, использующие libv4l, будут автоматически использовать обертку:

$ export LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libv4l2.so
$ v4l2-ctl --stream-mmap --stream-to=host

В программах на C:

#include < libv4l2.h>

// Вместо стандартного open()
int fd = v4l2_open("/dev/video0", O_RDWR);

// Вместо ioctl() v4l2_ioctl(fd, VIDIOC_QUERYCAP, &cap);

// Вместо read() v4l2_read(fd, buffer, buffer_size);

// Вместо close() v4l2_close(fd);

[Конкретные решаемые проблемы]

1. Проблема с форматом MJPEG: устройство может требовать MJPEG, но приложение ожидает YUYV. libv4l2 автоматически конвертирует MJPEG → YUYV.

2. Исправление некорректных размеров: драйвер сообщает неверный размер буфера, libv4l2 корректирует вычисления.

[Проверка использования]

Убедиться, что приложение использует libv4l2:

$ ldd $(which v4l2-ctl) | grep v4l2
$ strace v4l2-ctl --list-formats 2>&1 | grep v4l2

Принудительное использование, даже если приложение не слинковано с libv4l2:

$ LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libv4l2.so v4l2-ctl --all

[Пример работы с проблемным устройством]

Без libv4l2: может произойти ошибка "Inappropriate ioctl for device".

$ v4l2-ctl --set-fmt-video=width=1280,height=720,pixelformat=YUYV

С libv4l2: libv4l2 эмулирует недостающую функциональность.

$ LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libv4l2.so
$ v4l2-ctl --set-fmt-video=width=1280,height=720,pixelformat=YUYV

[Преимущества использования]

- Совместимость: работа с большим количеством устройств
- Стабильность: обход багов драйверов
- Удобство: прозрачная конвертация форматов
- Производительность: оптимизированные преобразования

Именно поэтому многие приложения (например, `vlc`, `mplayer`) используют libv4l2 для лучшей совместимости с различными видеоустройствами.

-h, --help

Напечатает сообщение подсказки по опциям.

--help-io

Напечатает подсказку по всем опциям, которые получают/установят/перечисляют входы и выходы, для video и audio.

--help-meta

Напечатает подсказку по всем опциям, которые получают/установят/перечисляют форматы метаданных.

--help-misc

Напечатает подсказку по различным опциям.

--help-overlay

Подсказка по всем опциям, которые получают/установят/перечисляют форматы overlay и framebuffer.

--help-sdr

Подсказка по всем опциям, которые получают/установят/перечисляют форматы software defined radio (SDR).

--help-selection

Подсказка по всем опциям, которые работают с выделениями: cropping (обрезка), composing (создание).

--help-stds

Подсказка по всем опциям, которые работают со стандартами SDTV и таймингами Digital Video.

SDTV (Standard Definition Television) - телевизионное вещание стандартной четкости. По "стандартной" имеется в виду начальные стандарты TV, которые появились на рынке изначально.

[Основные характеристики SDTV]

- Разрешение: 480i/576i (576 строк в PAL, 480 в NTSC)
- Соотношение сторон: 4:3 (традиционное) или 16:9 (широкоэкранное)
- Частота кадров: 25/30 fps (в зависимости от стандарта)
- Цифровое представление: 720×480 (NTSC) или 720×576 (PAL)

Современное значение. Хотя SDTV считается устаревшим для вещания, но оно все еще сохраняет актуальность:

- Системы видеонаблюдения до сих пор используют SD-камеры.
- Устройства захвата поддерживают SD-входы для работы со старым оборудованием.
- Эмуляторы и ретро-системы могут использовать SDTV-режимы.

[Основные стандарты SDTV]

Аналоговые:

- NTSC (National Television System Committee): 480i, 29.97 fps, в основном Северная Америка, Япония.
- PAL (Phase Alternating Line): 576i, 25 fps, Европа, Азия, Австралия.
- SECAM (Sequential Color with Memory): 576i, 25 fps, Франция, Восточная Европа.

Цифровые:

- ATSC (Северная Америка).
- DVB (Европа).
- ISDB (Япония).

[Использование в v4l2-ctl]

Команда показывает поддерживаемые стандарты видеоустройства:

$ v4l2-ctl --list-standards

Пример вывода:

ioctl: VIDIOC_ENUMSTD
   Index       : 0
   Id          : 0x0000000000000001
   Name        : NTSC
   Frame period: 1001/30000
   Frame lines : 525
Index : 1 Id : 0x0000000000000002 Name : NTSC-443

Установка стандарта NTSC:

$ v4l2-ctl -d /dev/video0 --set-standard=0

Установка стандарта PAL:

$ v4l2-ctl -d /dev/video0 --set-standard=1

Просмотр текущего стандарта:

$ v4l2-ctl -d /dev/video0 --get-standard

[Сравнение стандартов]

СтандартРазрешениеСоотношениеТипичное использование
SDTV 720×480/576 4:3/16:9 Аналоговое ТВ, DVD
EDTV 720p 16:9 "Улучшенное" ТВ
HDTV 1080i/1080p 16:9 Современное ТВ
UHD 4K/8K 16:9 Премиум ТВ

Полная информация о стандартах:

$ v4l2-ctl --all

Проверка, поддерживает ли устройство стандарты:

$ v4l2-ctl --list-formats-ext

Команда `--help-stds` в v4l2-ctl помогает работать с этими устаревшими, но все еще актуальными стандартами.

--help-streaming

Подсказка по всем опциям, которые работают со стримингом.

--help-subdev

Подсказка по всем опциям, которые работают с устройствами v4l-subdevX.

--help-tuner

Подсказка по всем опциям, которые работают с тюнерами и модуляторами.

--help-vbi

Подсказка по всем опциям, которые получают/установят/перечисляют форматы VBI.

VBI (Vertical Blanking Interval) - это интервал вертикального гашения в аналоговом телевизионном сигнале:

- Временной интервал между кадрами телевизионного сигнала.
- "Пустое" пространство в аналоговом ТВ-сигнале.
- Составляет примерно 5% от общего времени кадра.
- Возникает, когда луч ЭЛТ-трубки возвращается от нижней строки к верхней.

Изначально этот интервал использовался для:

- Синхронизации ЭЛТ-мониторов.
- Возврата луча от нижней части экрана к верхней.
- Предотвращения искажений при перерисовке кадра.
- Передачи телетекста, телеметрии и другой информации.
- Современное применение: цифровые субтитры, электронные программные гиды (EPG), интерактивные сервисы.

Субтитры и скрытые титры:

- CEA-608/708 - стандарты для закрытых титров.
- Teletext субтитры - в европейских стандартах.

Данные телеметрии:

VPS (Video Programming System)
WSS (Wide Screen Signaling)
XDS (Extended Data Services)

Получение телетекста через VBI:

$ v4l2-ctl -d /dev/video0 --get-vbi-cap

В цифровом телевидении:

- VBI данные передаются в MPEG-потоке как отдельные пакеты.
- PES пакеты для субтитров и телетекста.
- DVB стандарты для передачи дополнительных данных.

[Работа с VBI в v4l2]

Просмотр VBI возможностей:

$ v4l2-ctl --help-vbi
$ v4l2-ctl --list-formats | grep -i vbi

Настройка VBI форматов. Просмотр поддерживаемых VBI форматов:

$ v4l2-ctl --list-formats-vbi

Установка VBI формата:

$ v4l2-ctl --set-fmt-vbi=...

[Примеры использования в Linux]

Захват VBI данных через v4l2-ctl:

$ v4l2-ctl -d /dev/video0 --stream-vbi --stream-to=teletext.dat

Через специализированные утилиты:

$ zxing -q /dev/vbi0  # для чтения телетекста

Проверка поддержки VBI устройством, поиск VBI устройств:

$ ls -la /dev/vbi*
$ ls -la /dev/dvb/

Проверка возможностей:

$ v4l2-ctl --all | grep -i vbi

Форматы VBI в v4l2. Примеры VBI форматов:

$ v4l2-ctl --list-formats-vbi
# Может показать:
# - VBI_NTSC
# - VBI_PAL
# - RAW VBI
# - SLICED VBI

[Типы VBI данных]

Raw VBI:

- Необработанные данные VBI.
- Используется для низкоуровневого доступа.

Sliced VBI:

- Обработанные данные, разделенные по типам.
- Телетекст, скрытые титры, VPS и т.д.

[Современная значимость]

Хотя аналоговое ТВ уходит в прошлое, VBI все еще важно для:

- Обработки архивного видео
- Систем ретрансляции
- Совместимости со старым оборудованием
- Исследовательских задач

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

--help-vidcap

Подсказка по всем опциям, которые получают/устанавливают/перечисляют форматы захвата видео (video capture formats).

--help-vidout

Подсказка по всем опциям, которые получают/устанавливают/перечисляют формата вывода видео.

--help-edid

Подсказка по всем опциям, которые получают/устанавливают EDID.

EDID (Extended Display Identification Data) - стандартизированный набор данных, который дисплеи передают источнику сигнала для идентификации своих характеристик. EDID представляет собой следующее:

- Структура данных, хранящаяся в ПЗУ монитора/дисплея.
- Стандарт VESA (Video Electronics Standards Association).
- Передает технические характеристики дисплея источнику.
- Используется по интерфейсам: HDMI, DVI, DisplayPort, VGA.

Основное содержимое EDID:

- Идентификаторы производителя.
- Поддерживаемые разрешения.
- Размеры экрана (в см и дюймах).
- Цветовые пространства.
- Частоты обновления.
- Тайминги синхронизации.

Значение для видеоустройств. EDID критически важен для:

- Автоматической настройки разрешения и частоты.
- Совместимости между источниками видеосигнала и дисплеями.
- Plug-and-play функциональности.
- Оптимального качества изображения.

В контексте v4l2 работа с EDID позволяет правильно настроить устройства захвата HDMI/DVI для работы с различными источниками сигнала.

[Структура EDID данных]

Базовый блок (128 байт):

- Заголовок (8 байт)
- ID производителя (10 байт)
- Основные параметры дисплея (5 байт)
- Цветовые характеристики (10 байт)
- Стандартные тайминги (16 байт)
- Детальные тайминги (18 байт)
- Расширения (1 байт)
- Контрольная сумма (1 байт)

[Работа с EDID в v4l2]

Просмотр EDID, чтение EDID с устройства:

$ v4l2-ctl --get-edid
$ v4l2-ctl --get-edid | edid-decode

Запись EDID в файл:

$ v4l2-ctl --get-edid > display.edid

Установка EDID, загрузка EDID в устройство:

$ v4l2-ctl --set-edid=file=display.edid
$ v4l2-ctl --set-edid=hex=00ffff...

Проверка загруженного EDID:

$ v4l2-ctl --info
$ v4l2-ctl --query-dv-timings

Установка EDID для устройства захвата:

$ v4l2-ctl -d /dev/video0 --set-edid=file=1080p60.edid

Проверка установленного EDID:

$ v4l2-ctl -d /dev/video0 --get-edid | edid-decode

[Утилиты для работы с EDID]

Парсинг и анализ: edid-decode. Декодирование EDID:

$ v4l2-ctl --get-edid | edid-decode
$ cat display.edid | edid-decode

Просмотр в человеко-читаемом формате:

$ edid-decode display.edid

Создание EDID файлов. Генерация EDID для конкретного разрешения (используя специализированные утилиты):

$ cedid -r 1920x1080 -f 60 > 1080p60.edid

Генерация EDID. Использование awyeadid для создания EDID:

$ git clone https://github.com/akatrevorjay/edid-generator
$ cd edid-generator
$ ./generate-edid

[Настройка HDMI захвата]

1. Получить EDID с целевого дисплея:

$ v4l2-ctl -d /dev/video0 --get-edid > target_display.edid

2. Декодировать для проверки:

$ edid-decode target_display.edid

3. Установить EDID в устройство захвата:

$ v4l2-ctl -d /dev/video1 --set-edid=file=target_display.edid

4. Проверить доступные форматы:

$ v4l2-ctl -d /dev/video1 --list-formats-ext

[Типичные проблемы и решения]

1. Устройство не читает EDID. Принудительная установка EDID:

$ v4l2-ctl -d /dev/video0 --set-edid=file=forced.edid --fix-edid-checksums

2. Неправильное определение разрешения. Создание EDID с нужным разрешением, установка его в устройство:

$ v4l2-ctl --set-edid=file=custom_resolution.edid

[Расширения EDID]

CEA Extension:

- Дополнительные форматы видео
- Аудио форматы
- Расширенные цветовые пространства

DisplayID Extension:

- Высокие разрешения (4K, 8K)
- Расширенные возможности дисплея

--help-all

Подсказка по всем опциям.

--all

Отобразит всю доступную информацию.

-C, --get-ctrl < ctrl>[,< ctrl>...]

Получит значение элемента управления (controls) [VIDIOC_G_EXT_CTRLS].

-c, --set-ctrl < ctrl>=< val>[,< ctrl>=< val>...]

Установит значение элемента управления [VIDIOC_S_EXT_CTRLS].

-D, --info

Покажет информацию драйвера [VIDIOC_QUERYCAP].

-e, --out-device < dev>

Использовать < dev> для выходных потоков вместо устройства по умолчанию, как установлено --device. Если < dev> начинается с цифры, то используется /dev/video< dev>. Иначе если было ранее указано -z, то < dev> это имя объекта или идентификатор интерфейса (если с префиксом 0x), который находится в топологии коммуникационного устройства со строкой информации шины, как указано параметром -z.

-E, --export-device < dev>

Использовать устройство < dev> для экспорта буферов DMA. Если < dev> начинается с цифры, то используется /dev/video< dev>. Иначе если было ранее указано -z, то < dev> это имя объекта или идентификатор интерфейса (если с префиксом 0x), который находится в топологии коммуникационного устройства со строкой информации шины, как указано параметром -z.

-z, --media-bus-info < bus-info>

Найдет media-устройство по указанной строке bus-info. Если установлено, то опции -d, -e и -E могут использовать имя объекта или идентификатор интерфейса для ссылки на узлы устройства (device nodes). Пример:

   v4l2-ctl -z platform:vivid-000 -d vivid-000-vid-cap

-k, --concise

Более краткий вывод, если это возможно.

-l, --list-ctrls

Отобразит все элементы управления (controls) и их значения [VIDIOC_QUERYCTRL].

-L, --list-ctrls-menus

Отобразит все элементы управления и их меню [VIDIOC_QUERYMENU].

-r, --subset < ctrl>[,< offset>,< size>]+

Подмножество (subset) N-мерного массива для получения/установки элемента управления < ctrl> для любой размерности, указанной кортежем (< offset>, < size>).

--list-devices

Выведет список всех устройств. Если была указана опция -z, то перечислит только media-устройства с информационной строкой шины, указаной опцией -z.

--log-status

Лог состояния платы в логе kernel [VIDIOC_LOG_STATUS].

--get-priority

Запросить текущий приоритет доступа [VIDIOC_G_PRIORITY].

--set-priority < prio>

Установить новый приоритет доступа [VIDIOC_S_PRIORITY]. Здесь < prio> может быть 1 (background), 2 (interactive) или 3 (record).

--silent

Установит только код результата, не будут выводиться никакие сообщения.

--sleep < secs>

Сон на < secs> секунд, вызов QUERYCAP и закрытие дескриптора файла.

[Примеры использования]

Список всех устройств video:

v4l2-ctl [-A|--list-devices]

Список поддерживаемых форматов video и разрешений устройства video по умолчанию /dev/video0:

v4l2-ctl --list-formats-ext

Список поддерживаемых форматов video и разрешений определенного устройства video:

v4l2-ctl --list-formats-ext [-d|--device] путь/до/video_device

Получение всех подробностей по video-устройству:

v4l2-ctl --all [-d|--device] путь/до/video_device

Захват JPEG фото с указанным разрешением из video-устройства:

v4l2-ctl [-d|--device] path/to/video_device \
 --set-fmt-video=width=width,height=height,pixelformat=MJPG --stream-mmap \
 --stream-to=path/to/output.jpg --stream-count=1

Захват сырого видеопотока из video-устройства:

v4l2-ctl [-d|--device] path/to/video_device \
 --set-fmt-video=width=width,height=height,pixelformat=format \
 --stream-mmap --stream-to=path/to/output \
 --stream-count=number_of_frames_to_capture

Список всех элементов управления (controls) video-устройства и их значений:

v4l2-ctl [-l|--list-ctrls] [-d|--device] путь/до/video_device

Установить значение элемента управления video-устройства:

v4l2-ctl [-d|--device] path/to/video_device [-c|--set-ctrl] control_name=value

Запросить информацию об устройстве /dev/video1:

v4l2-ctl -d1 -D

Стриминг видео с помощью MMAP stream I/O из /dev/video0:

v4l2-ctl -d0 --stream-mmap

MMAP (Memory Mapping) - это механизм отображения файлов или устройств в память процесса. В контексте V4L2 и видеоустройств MMAP используется для эффективного обмена данными между ядром и пользовательским пространством.

1. Что такое MMAP в V4L2

MMAP позволяет:

- Отобразить буферы драйвера непосредственно в память приложения.
- Избежать копирования данных между ядром и пользовательским пространством.
- Достичь высокой производительности при потоковой передаче видео.

2. Типы I/O в V4L2

Read/Write I/O. Традиционный способ - копирование данных:

$ v4l2-ctl --stream-to=file.raw

MMAP I/O. Прямой доступ к буферам драйвера:

$ v4l2-ctl --stream-mmap --stream-to=file.raw

User Pointer I/O: приложение предоставляет свои буферы.

[Как работает MMAP в V4L2]

Процесс работы:

1. Запрос буферов у драйвера.

2. Отображение буферов в память приложения.

3. Цикл обработки:

   - Старт захвата кадра.
   - Ожидание заполнения буфера.
   - Обработка данных.
   - Возврат буфера драйверу.

[Преимущества MMAP]

Производительность:

- Нет копирования данных.
- Низкие накладные расходы CPU.
- Высокая скорость передачи кадров.

Эффективность:

- Прямой доступ к данным камеры.
- Минимальная задержка.
- Оптимальное использование памяти.

Сравнение MMAP с другими методами:

МетодПроизводительностьПамятьСложность
Read/Write Низкая Высокое использование Простая
MMAP Высокая Оптимальная Средняя
UserPtr Средняя Гибкая Сложная

[Практическое использование в v4l2-ctl]

Базовый пример:

$ v4l2-ctl -d /dev/video0 --stream-mmap --stream-to=video.raw

С настройками формата:

$ v4l2-ctl -d /dev/video0 \
  --set-fmt-video=width=640,height=480,pixelformat=YUYV \
  --stream-mmap \
  --stream-to=host 192.168.1.100

С ограничением количества кадров:

$ v4l2-ctl -d /dev/video0 --stream-mmap --stream-count=100 --stream-to=frames/

[Программная реализация MMAP]

Пример на C:

#include < linux/videodev2.h>
#include < sys/mman.h>

struct buffer {
void *start; size_t length; };

// Запрос буферов
struct v4l2_requestbuffers reqbuf = {0};
reqbuf.count = 4; reqbuf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; reqbuf.memory = V4L2_MEMORY_MMAP; ioctl(fd, VIDIOC_REQBUFS, &reqbuf);

// Отображение буферов в память
for (int i = 0; i < reqbuf.count; i++) {
struct v4l2_buffer buffer = {0};
buffer.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
buffer.memory = V4L2_MEMORY_MMAP;
buffer.index = i;
ioctl(fd, VIDIOC_QUERYBUF, &buffer);

buffers[i].length = buffer.length;
buffers[i].start = mmap(NULL, buffer.length,
PROT_READ | PROT_WRITE,
MAP_SHARED, fd, buffer.m.offset); }

[Диагностика проблем с MMAP]

Проверка поддержки MMAP:

$ v4l2-ctl -d /dev/video0 --all | grep -i mmap

Мониторинг использования памяти. Во время потоковой передачи:

$ watch -n 1 'cat /proc/meminfo | grep -E "(MemFree|Cached)"'

Проверка производительности. Замер FPS с MMAP:

$ v4l2-ctl -d /dev/video0 --stream-mmap --stream-to=/dev/null --stream-count=300

[Оптимизация MMAP]

Количество буферов. Обычно наличие 4-8 буферов оптимально:

$ v4l2-ctl -d /dev/video0 --set-bufsize=4

Размер буферов автоматически вычисляется на основе формата:

$ v4l2-ctl -d /dev/video0 --set-fmt-video=width=1920,height=1080

[Типичные проблемы]

1. Нехватка буферов. Симптомы: пропущенные кадры, низкий FPS. Решение: увеличить количество буферов.

2. Проблемы с памятью. Симптомы: ошибки mmap, segmentation fault. Решение: проверить доступную память, уменьшить разрешение.

[Альтернативы MMAP]

Для простых случаев, Read/Write - проще, но медленнее.

$ v4l2-ctl --stream-to=file.raw

Для специализированных задач: используйте UserPtr, когда нужно контролировать размещение буферов (требует программирования).

MMAP - это наиболее эффективный метод для высокопроизводительной потоковой передачи видео в Linux, используемый большинством профессиональных приложений для работы с видео.

Стриминг одного кадра видео из /dev/video0 и сохранение его в файл:

v4l2-ctl --stream-mmap --stream-count=1 --stream-to=file.raw

Стриминг видео из /dev/video0 и отправка его по сети. Используйте на хосте 'qvidcap -p' для просмотра видео [1].

v4l2-ctl --stream-mmap --stream-to-host < hostname>

Стриминг видео из /dev/video0, используя буферы DMABUF, экспортированные из /dev/video2:

v4l2-ctl --stream-dmabuf --export-device /dev/video2

Стриминг видео между устройствами памяти (memory-to-memory device):

v4l2-ctl --stream-mmap --stream-out-mmap

Стриминг видео из устройства захвата (capture video device /dev/video1) в устройство вывода видео (/dev/video2):

v4l2-ctl -d1 --stream-mmap --out-device /dev/video2 --stream-out-dmabuf

[Ссылки]

1. man qvidcap.

 

Добавить комментарий


Защитный код
Обновить

Top of Page