【GStreamer 】2-ubuntu v4l2-ctl 查看USB 相机基本参数

        v4l2是Video4linux2的简称,是linux中关于视频设备的内核驱动,在Linux中,视频设备是设备文件,可以像访问普通文件一样对其进行读写,摄像头设备文件位置是/dev/video0。V4L2在设计时,是要支持很多广泛的设备的,它们之中只有一部分在本质上是真正的视频设备。

        因为我们这篇文章不涉及内核部分摄像头驱动的实现,大致可以简单说下,内核部分的实现分两部分:

1.我们要根据摄像头的种类,实现具体的摄像头传感器的驱动,这里可能有一些数据和控制的通信总线的协议。

2.然后这个具体的驱动需要适配这个v4l2这个框架,然后向用户层映射成一个字符设备文件。

        而我们的主题就是对这个设备文件进行操作,这就是应用层该做的事。

目录

1 v4l2-ctl 常用命令介绍:

2 查看系统识别的USB 相机设备:

3 显示测试----需要桌面终端的配合

4 ubuntu下使用v4l2-ctl查看USB摄像头参数

4.1 查看可被调用的设备

4.2 查看摄像头所支持的指定格式的分辨率

4.3查看usb摄像头所有可用的分辨率

4.4 相机的曝光增益查询

4.5 修改增益参数

4.6 相机参数说明


1 v4l2-ctl 常用命令介绍:

#List all video devices:
v4l2-ctl --list-devices
​
#List supported video formats and resolutions of default video device 
v4l2-ctl --list-formats-ext
​
#List supported video formats and resolutions of a specific video device:
v4l2-ctl --list-formats-ext --device path/to/video_device
#eg:
v4l2-ctl --list-formats-ext --device /dev/video0
​
#Get all details of a video device:
v4l2-ctl --all --device path/to/video_device
#eg:
v4l2-ctl --all --device /dev/video0
​
#Capture a JPEG photo with a specific resolution from video device:
v4l2-ctl --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
#eg:
v4l2-ctl --device /dev/video0 --set-fmt-video=width=1280,height=720,pixelformat=MJPG --stream-mmap --stream-to=/home/nvidia/Pictures/video0-output.jpg --stream-count=1
​
#Capture a raw video stream from video device:
v4l2-ctl --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
#eg:
v4l2-ctl --device /dev/video0 --set-fmt-video=width=1280,height=720,pixelformat=MJPG --stream-mmap --stream-to=/home/nvidia/Pictures --stream-count=10
​
#List all video device's controls and their values:
v4l2-ctl --list-ctrls --device /path/to/video_device
#eg:
v4l2-ctl --list-ctrls --device /dev/video0

2 查看系统识别的USB 相机设备:

ls /dev/video*

 
ls /dev/v*

 

 

3 显示测试----需要桌面终端的配合

cheese -d /dev/video0

 

4 ubuntu下使用v4l2-ctl查看USB摄像头参数

v4l2-ctl -d  /dev/video0 --all

如果没有相关命令,请安装

v4l2-ctl --all -d /dev/video0查看相机参数时报错:

v4l2-ctl :command not found

手动安装:

sudo apt-get install v4l-utils

相机详细信息(我自己的):

v4l2-ctl -d  /dev/video0 --all
v4l2-ctl --list-ctrls --device /dev/video0
                     brightness 0x00980900 (int)    : min=-64 max=64 step=1 default=0 value=0
                       contrast 0x00980901 (int)    : min=0 max=64 step=1 default=32 value=32
                     saturation 0x00980902 (int)    : min=0 max=128 step=1 default=64 value=64
                            hue 0x00980903 (int)    : min=-40 max=40 step=1 default=0 value=0
 white_balance_temperature_auto 0x0098090c (bool)   : default=1 value=1
                          gamma 0x00980910 (int)    : min=72 max=500 step=1 default=100 value=100
                           gain 0x00980913 (int)    : min=0 max=100 step=1 default=0 value=0
           power_line_frequency 0x00980918 (menu)   : min=0 max=2 default=1 value=1
      white_balance_temperature 0x0098091a (int)    : min=2800 max=6500 step=1 default=4600 value=4600 flags=inactive
                      sharpness 0x0098091b (int)    : min=0 max=16 step=1 default=8 value=8
         backlight_compensation 0x0098091c (int)    : min=0 max=121 step=121 default=0 value=121
                  exposure_auto 0x009a0901 (menu)   : min=0 max=3 default=3 value=3
              exposure_absolute 0x009a0902 (int)    : min=1 max=5000 step=1 default=157 value=157 flags=inactive
         exposure_auto_priority 0x009a0903 (bool)   : default=0 value=1
nvidia@nvidia-desktop:~/Pictures$ v4l2-ctl -d  /dev/video0 --all
Driver Info (not using libv4l2):
    Driver name   : uvcvideo
    Card type     : LRCP  USB2.0
    Bus info      : usb-70090000.xusb-3.4
    Driver version: 4.9.253
    Capabilities  : 0x84200001
        Video Capture
        Streaming
        Extended Pix Format
        Device Capabilities
    Device Caps   : 0x04200001
        Video Capture
        Streaming
        Extended Pix Format
Priority: 2
Video input : 0 (Camera 1: ok)
Format Video Capture:
    Width/Height      : 1280/720
    Pixel Format      : 'MJPG'
    Field             : None
    Bytes per Line    : 0
    Size Image        : 1843789
    Colorspace        : Default
    Transfer Function : Default (maps to Rec. 709)
    YCbCr/HSV Encoding: Default (maps to ITU-R 601)
    Quantization      : Default (maps to Full Range)
    Flags             : 
Crop Capability Video Capture:
    Bounds      : Left 0, Top 0, Width 1280, Height 720
    Default     : Left 0, Top 0, Width 1280, Height 720
    Pixel Aspect: 1/1
Selection: crop_default, Left 0, Top 0, Width 1280, Height 720
Selection: crop_bounds, Left 0, Top 0, Width 1280, Height 720
Streaming Parameters Video Capture:
    Capabilities     : timeperframe
    Frames per second: 30.000 (30/1)
    Read buffers     : 0
                     brightness 0x00980900 (int)    : min=-64 max=64 step=1 default=0 value=0
                       contrast 0x00980901 (int)    : min=0 max=64 step=1 default=32 value=32
                     saturation 0x00980902 (int)    : min=0 max=128 step=1 default=64 value=64
                            hue 0x00980903 (int)    : min=-40 max=40 step=1 default=0 value=0
 white_balance_temperature_auto 0x0098090c (bool)   : default=1 value=1
                          gamma 0x00980910 (int)    : min=72 max=500 step=1 default=100 value=100
                           gain 0x00980913 (int)    : min=0 max=100 step=1 default=0 value=0
           power_line_frequency 0x00980918 (menu)   : min=0 max=2 default=1 value=1
      white_balance_temperature 0x0098091a (int)    : min=2800 max=6500 step=1 default=4600 value=4600 flags=inactive
                      sharpness 0x0098091b (int)    : min=0 max=16 step=1 default=8 value=8
         backlight_compensation 0x0098091c (int)    : min=0 max=121 step=121 default=0 value=121
                  exposure_auto 0x009a0901 (menu)   : min=0 max=3 default=3 value=3
              exposure_absolute 0x009a0902 (int)    : min=1 max=5000 step=1 default=157 value=157 flags=inactive
         exposure_auto_priority 0x009a0903 (bool)   : default=0 value=1

4.1 查看可被调用的设备

nvidia@nvidia-desktop:~/Workspace/test/06-GStreamer/01-rtsp_ipc_play$ v4l2-ctl --list-devices
LRCP  USB2.0 (usb-70090000.xusb-3):
    /dev/video0

4.2 查看摄像头所支持的指定格式的分辨率

nvidia@nvidia-desktop:~$ sudo v4l2-ctl --list-framesizes=MJPG -d /dev/video0
[sudo] password for nvidia: 
ioctl: VIDIOC_ENUM_FRAMESIZES
    Size: Discrete 1280x720
    Size: Discrete 800x600
    Size: Discrete 640x480
    Size: Discrete 640x360
    Size: Discrete 352x288
    Size: Discrete 320x240

4.3查看usb摄像头所有可用的分辨率

nvidia@nvidia-desktop:~/Pictures$ v4l2-ctl --list-formats-ext --device /dev/video0
ioctl: VIDIOC_ENUM_FMT
    Index       : 0
    Type        : Video Capture
    Pixel Format: 'MJPG' (compressed)
    Name        : Motion-JPEG
        Size: Discrete 1280x720
            Interval: Discrete 0.033s (30.000 fps)
        Size: Discrete 800x600
            Interval: Discrete 0.033s (30.000 fps)
        Size: Discrete 640x480
            Interval: Discrete 0.033s (30.000 fps)
        Size: Discrete 640x360
            Interval: Discrete 0.033s (30.000 fps)
        Size: Discrete 352x288
            Interval: Discrete 0.033s (30.000 fps)
        Size: Discrete 320x240
            Interval: Discrete 0.033s (30.000 fps)
​
    Index       : 1
    Type        : Video Capture
    Pixel Format: 'YUYV'
    Name        : YUYV 4:2:2
        Size: Discrete 1280x720
            Interval: Discrete 0.200s (5.000 fps)
        Size: Discrete 800x600
            Interval: Discrete 0.050s (20.000 fps)
        Size: Discrete 640x480
            Interval: Discrete 0.040s (25.000 fps)
        Size: Discrete 640x360
            Interval: Discrete 0.033s (30.000 fps)
        Size: Discrete 352x288
            Interval: Discrete 0.033s (30.000 fps)
        Size: Discrete 320x240
            Interval: Discrete 0.033s (30.000 fps)
sudo v4l2-ctl -d /dev/video0 --list-formats//查看当前摄像头支持的视频压缩格式
sudo v4l2-ctl -d /dev/video0 --list-formats-ext//查看当前摄像头支持的分辨率和帧速率
sudo v4l2-ctl -d /dev/video0 --set-parm=30//设置帧率
sudo v4l2-ctl --list-framesizes=MJPG -d /dev/video0//查看摄像头所支持的分辨率
sudo v4l2-ctl --set-fmt-video=width=320,height=240,pixelformat=YUYV

sudo v4l2-ctl --set-fmt-video=width=640,height=480,pixelformat=YUYV
sudo v4l2-ctl -d /dev/video0 --set-parm=30//设置帧率

sudo v4l2-ctl --set-fmt-video=width=1280,height=720,pixelformat=MJPG

4.4 相机的曝光增益查询

nvidia@nvidia-desktop:~/Workspace/test/captu$ v4l2-ctl -d /dev/video0 --list-ctrls
                     brightness 0x00980900 (int)    : min=-64 max=64 step=1 default=0 value=0
                       contrast 0x00980901 (int)    : min=0 max=64 step=1 default=32 value=32
                     saturation 0x00980902 (int)    : min=0 max=128 step=1 default=64 value=64
                            hue 0x00980903 (int)    : min=-40 max=40 step=1 default=0 value=0
 white_balance_temperature_auto 0x0098090c (bool)   : default=1 value=1
                          gamma 0x00980910 (int)    : min=72 max=500 step=1 default=100 value=100
                           gain 0x00980913 (int)    : min=0 max=100 step=1 default=0 value=0
           power_line_frequency 0x00980918 (menu)   : min=0 max=2 default=1 value=1
      white_balance_temperature 0x0098091a (int)    : min=2800 max=6500 step=1 default=4600 value=4600 flags=inactive
                      sharpness 0x0098091b (int)    : min=0 max=16 step=1 default=8 value=8
         backlight_compensation 0x0098091c (int)    : min=0 max=121 step=121 default=0 value=121
                  exposure_auto 0x009a0901 (menu)   : min=0 max=3 default=3 value=3
              exposure_absolute 0x009a0902 (int)    : min=1 max=5000 step=1 default=157 value=157 flags=inactive
         exposure_auto_priority 0x009a0903 (bool)   : default=0 value=1

4.5 修改增益参数

v4l2-ctl --device=/dev/video0 --set-ctrl=exposure_auto=1
v4l2-ctl --device=/dev/video0 --set-ctrl=exposure_absolute=200

4.6 相机参数说明

brightness 0x00980900 (int)    : min=-64 max=64 step=1 default=-40 value=20
                       contrast 0x00980901 (int)    : min=0 max=100 step=1 default=50 value=100//对比度
                     saturation 0x00980902 (int)    : min=0 max=100 step=1 default=50 value=50//饱和度
                            hue 0x00980903 (int)    : min=-180 max=180 step=1 default=0 value=0//色彩
 white_balance_temperature_auto 0x0098090c (bool)   : default=1 value=1//自动白平衡
                          gamma 0x00980910 (int)    : min=100 max=500 step=1 default=300 value=300//伽马,数字越大,图片的亮度也就越高
           power_line_frequency 0x00980918 (menu)   : min=0 max=2 default=2 value=2
      white_balance_temperature 0x0098091a (int)    : min=2800 max=6500 step=10 default=4600 value=4600 flags=inactive//白平衡
                      sharpness 0x0098091b (int)    : min=0 max=100 step=1 default=50 value=50//锐度
         backlight_compensation 0x0098091c (int)    : min=0 max=2 step=1 default=0 value=0//背光补偿
         exposure_auto_priority 0x009a0903 (bool)   : default=0 value=0
                     focus_auto 0x009a090c (bool)   : default=1 value=0
v4l2-ctl --device=/dev/video0 --set-fmt-video=width=1280,height=720,pixelformat=0

  • 16
    点赞
  • 78
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 在 `gst-launch-1.0` 命令中,`video/x-raw` 是一个 GStreamer 的媒体类型标签,它表示一个未经编码的原始视频流。具体来说,它指定了视频的分辨率、颜色空间、像素格式和帧速率等属性。这个标签告诉 GStreamer 要处理的是一个原始视频流,而不是已经经过编码的视频流。在使用 `v4l2src` 这个插件时,它会从 V4L2 设备中捕获原始视频数据,并将其作为 `video/x-raw` 类型的数据传递给下一个处理器。 ### 回答2: 在gst-launch-1.0 -v v4l2src指令中,video/x-raw是GStreamer多媒体框架中用于指定视频数据格式的标志。它表示原始(raw)的视频数据,即未经过任何压缩或编码的原始视频帧。 video/x-raw表示视频是以原始的像素格式和颜色空间进行传输和处理的。这意味着视频帧不经过任何变换或转换,以原始的格式进行传输。这是在处理视频流时常用的数据格式,因为它不会引入任何额外的编码开销,保留了视频的最高质量。 通过指定video/x-raw,我们可以控制视频流的编码参数和属性,比如分辨率、帧率、颜色空间等。这样可以确保视频在处理过程中保持最佳的质量。但是需要注意的是,原始的视频数据会占用更多的存储空间和处理能力,因此在实际应用中可能会对视频进行压缩或其他处理,以平衡存储和性能的需求。 总之,video/x-raw表示原始的视频数据格式,用于在GStreamer指令中指定视频输入或输出的格式,保留了视频的原始质量。 ### 回答3: 在 gst-launch-1.0 -v v4l2src 指令中,video/x-raw 是指视频数据流的媒体类型。它描述了视频数据在传输和处理过程中的原始(未经编码或压缩)格式。 其中,video 表示这是一个视频流,而 x-raw 表示它是原始数据,即未经编码或压缩的裸数据。这意味着该指令从 v4l2src 元素获取的视频数据是未经过处理的原始视频帧。 video/x-raw 还可以带有额外的属性,如像素格式(例如 RGB、YUV)、分辨率和帧率等,这些属性描述了视频帧的特征。 使用 video/x-raw 媒体类型是因为在某些应用场景中,我们可能需要对视频进行自定义的处理或者将其传递给其他元素进行进一步的处理,例如进行编码、压缩或渲染等。通过使用原始视频数据,我们可以有更多的灵活性和选择,以便根据实际需求进行后续处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

机器人虎哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值