Вопрос или проблема
Я использовал камеру Logitech 1280×720/30 на своем Ubuntu 22.04.
Я настроил немного кода на Python, чтобы использовать GStreamer для чтения видео с камеры. Однако я могу получить только 7.5 кадров в секунду, хотя она должна давать 30 fps. Это побудило меня провести некоторые исследования.
Когда я запускаю v4l2-ctl --list-formats-ext
, я получаю:
[0]: 'YUYV' (YUYV 4:2:2)
Размер: Дискретный 1280x720
Интервал: Дискретный 0.133s (7.500 fps)
Интервал: Дискретный 0.200s (5.000 fps)
[1]: 'MJPG' (Motion-JPEG, сжатый)
Размер: Дискретный 1280x720
Интервал: Дискретный 0.033s (30.000 fps)
Интервал: Дискретный 0.040s (25.000 fps)
Интервал: Дискретный 0.050s (20.000 fps)
Интервал: Дискретный 0.067s (15.000 fps)
Интервал: Дискретный 0.100s (10.000 fps)
Интервал: Дискретный 0.200s (5.000 fps)
Однако, когда я использую GUI Guvcview, он предлагает мне гораздо больше вариантов для захвата видео 1280×720:
- YUYV - макс. частота кадров 15/2
- MJPG - макс. частота кадров 30
- RGB3 - макс. частота кадров 30
- BGR3 - макс. частота кадров 30
- YU12 - макс. частота кадров 30
- YV12 - макс. частота кадров 30
Кажется, что только YUYV не способен на 30 fps?
Почему v4l2-ctl
не предоставляет столько же вариантов, как Gucview? Другими словами, какие из этих видеовыходов действительно поддерживаются моей USB-камерой?
Ответ или решение
V4l2-ctl и Guvcview: как выбрать инструмент для точного отображения возможностей USB-камеры?
При работе с USB-камерами на Ubuntu 22.04 важно выбрать правильный инструмент для диагностики и конфигурации видео. В данном контексте. v4l2-ctl
и Guvcview представляют собой два популярных инструмента для работы с камерами, однако у них есть свои особенности, которые могут влиять на точность отображения возможностей подключенной камеры, как в вашем случае с Logitech 1280×720/30.
Технические различия между v4l2-ctl и Guvcview
1. Степень детализации информации:
v4l2-ctl
является консольным инструментом, который предоставляет сведения о поддерживаемых форматах и частоте кадров вашей камеры на уровне VIDIOC_ENUM_FMT, а также может быть ограничен параметрами, выставленными на уровне драйвера. Вывод, который вы получили от командыv4l2-ctl --list-formats-ext
, показывает, что формат YUYV ограничен до 7.5 fps, в то время как формат MJPG поддерживает 30 fps.- Guvcview, с другой стороны, предлагает более интуитивно понятный интерфейс и может отображать больше возможных форматов и частот кадров, которые ваш веб-камера может поддерживать в теории. Это связано с тем, что Guvcview управляет параметрами захвата в реальном времени и может отслеживать возможности драйвера более эффективно.
2. Поддержка разных форматов:
- Как показали ваши результаты,
v4l2-ctl
выделяет два формата: YUYV и MJPG, причем первый ограничен по частоте кадров. Guvcview предоставляет более широкий спектр форматов захвата (RGB3, BGR3, YU12, YV12), что позволяет лучше подбирать идеальные условия для захвата. - Это может привести к некоторым неясностям; например, если Guvcview предлагает формат, который напрямую не поддерживается вашим драйвером, это может быть связано с его возможностью более гибко интерпретировать возможности устройства.
Что выбрать для точной диагностики?
1. Надежность v4l2-ctl:
v4l2-ctl
более низкоуровневый инструмент, который взаимодействует непосредственно с ядром Linux и драйверами, и поэтому может быть более точным в отображении реальных ограничений вашей камеры, особенно когда дело касается форматов, которые фактически поддерживаются.
2. Удобство Guvcview:
- Guvcview предлагает более приятный интерфейс и большую вариативность форматов. Это делает его хорошим выбором для пользователей, которые ценят удобство работы и нуждаются в быстрой настройке параметров видео.
Заключение
Для целей точного определения возможностей вашей камеры рекомендуется использовать оба инструмента в совокупности. v4l2-ctl
даст вам информацию о реальных ограничениях форматов и частоты кадров, поддерживаемых драйвером в данный момент, в то время как Guvcview позволит вам исследовать теоретически возможные форматы и параметры.
Если вы столкнулись с проблемой низкой частоты кадров (7.5 fps), проверьте, какую именно конфигурацию вы используете в GStreamer, и попробуйте переключиться на более подходящий формат, такой как MJPG, который, согласно результатам, поддерживает необходимую частоту кадров 30 fps.