如何查找支持的网络摄像头分辨率?

我在我的T500 Thinkpad上有一个网络摄像头。我想知道它支持的分辨率。有没有一种方法可以通过软件来找出它(而不必查阅文档)?

请注意,lsusb解决方案似乎不适用于所有网络摄像头——例如,对于我的Hercules Deluxe,它不会输出宽度和高度。但是cheese解决方案有效,可在“编辑 > 首选项”下找到可用的分辨率。 - Skippy le Grand Gourou
2http://superuser.com/questions/639738/how-can-i-list-the-available-video-modes-for-a-usb-webcam-in-linux - Ciro Santilli OurBigBook.com
5个回答

如果您已经安装了video4linux,请尝试以下操作:
v4l2-ctl -d /dev/video0 --list-formats-ext

使用-d参数来指定您的相机设备,但是如果您确信只有一个视频设备连接,则可以省略该参数。
您应该会得到类似以下的结果:
    ioctl: VIDIOC_ENUM_FMT
    Type: Video Capture

    [0]: 'JPEG' (JFIF JPEG, compressed)
            Size: Discrete 320x240
            Size: Discrete 640x480

来源: 如何在Linux中列出USB网络摄像头的可用视频模式?


7首先需要安装实用程序:sudo apt-get install v4l-utils - sup
最近(在最新的Ubuntu上),它会输出分辨率和每个分辨率的帧率。有时候,即使输出中显示了目标帧率,你实际上也无法达到它。 - matanster

两种可能的方法:
使用任何可以与网络摄像头进行交互的软件(例如cheese),保存一个图片并查看分辨率。
在终端中检查lsusb的输出,找到描述摄像头的一行。
$ lsusb
Bus 001 Device 002: ID 5986:0241 Acer, Inc BisonCam, NB Pro
...

然后使用“Bus”和“Device”号码来获取有关该设备的更多信息:
$ lsusb -s 001:002 -v | egrep "Width|Height"
    wWidth    640
    wHeight   480
    wWidth    1280
    wHeight   1024
...

这将打印相机能够拍摄的高度和宽度对 - 在这种情况下,是1280x1024以及一些更小的尺寸。

谢谢,我明白了。`屏幕宽度 640 屏幕高度 480 屏幕宽度 320 屏幕高度 240 屏幕宽度 800 屏幕高度 600 屏幕宽度 1024 屏幕高度 600 屏幕宽度 1024 屏幕高度 768 屏幕宽度 1280 屏幕高度 800 屏幕宽度 1280 屏幕高度 1024 屏幕宽度 640 屏幕高度 480 屏幕宽度 320 屏幕高度 240 屏幕宽度 800 屏幕高度 600 屏幕宽度 1024 屏幕高度 600 屏幕宽度 1024 屏幕高度 768 屏幕宽度 1280 屏幕高度 800 屏幕宽度 1280 屏幕高度 1024`我猜可以假设最高的组合是物理分辨率。 - sup
1如果不是USB,而是内置的呢? - NoBugs
1@NoBugs内置摄像头通常也是通过内部USB接口连接的。我的摄像头是内置的,但在lsusb列表中仍然显示为"Sunplus Innovation Technology Inc."。 - Masoud
我看到相机在lsusb中显示出来,但是-s选项没有提供任何关于它的额外信息。 - Michael
@Michael -s 选项选择特定设备,-v 选项提供详细信息。你可以在分页器中浏览这些信息,例如 lsusb -s 001:002 -v | less -i,然后你可以使用 /width 来搜索尺寸信息。 - Walf

这也可以通过ffmpeg实现,它还提供有关视频编码的信息(例如原始格式与MJPEG)。
ffmpeg -f video4linux2 -list_formats all -i /dev/video0

示例输出:

...
[video4linux2,v4l2 @ 0x7fa3a8000b40] Raw       :     yuyv422 :           YUYV 4:2:2 : 640x480 320x240 800x600 1024x600 1024x768 1280x800 1280x1024
[video4linux2,v4l2 @ 0x7fa3a8000b40] Compressed:       mjpeg :          Motion-JPEG : 640x480 320x240 800x600 1024x600 1024x768 1280x800 1280x1024
...

如果您没有运行X服务器,可以使用ffmpeg作为替代方法。 - Benjamin Peter
2谢谢你的提示,ffmpeg更好/更通用。 - sebix
谢谢你的回答,比之前的回答更好。在我的情况下,我被之前的回答搞糊涂了,因为我无法使用供应商(戴尔)宣传的最佳分辨率。现在我明白我需要使用压缩/ mjpeg 格式来使用完整的分辨率,而不是原始/ yuyv422 格式。压缩:mjpeg:Motion-JPEG:1280x720...640x480。 原始:yuyv422:YUYV 4:2:2:640x480。 - Chris
1这取决于您使用的视频软件,它会选择哪种分辨率/视频源。有些软件依赖原始源,这样您可能无法获得最佳输出效果,除非您能手动选择其他来源。 - sebix

如果您已经安装了带有插件gstreamer1.0-plugins-base-apps的gstreamer,您可以使用gst-device-monitor-1.0二进制文件。
$ gst-device-monitor-1.0

示例输出:

Device found:

    name  : FHD Camera
    class : Video/Source
    caps  : video/x-raw, format=(string)YUY2, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction){ 5/1, 3/1 };
            video/x-raw, format=(string)YUY2, width=(int)1280, height=(int)720, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)5/1;
            video/x-raw, format=(string)YUY2, width=(int)640, height=(int)480, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)20/1;
            video/x-raw, format=(string)YUY2, width=(int)320, height=(int)240, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)30/1;
            image/jpeg, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction){ 30/1, 25/1, 20/1, 15/1, 10/1, 5/1, 1/1 };
            image/jpeg, width=(int)1280, height=(int)720, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)30/1;
            image/jpeg, width=(int)640, height=(int)480, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)30/1;
            image/jpeg, width=(int)320, height=(int)240, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)30/1;
    properties:
        udev-probed = true
        device.bus_path = platform-70090000.xusb-usb-0:2.1:1.0
        sysfs.path = /sys/devices/70090000.xusb/usb1/1-2/1-2.1/1-2.1:1.0/video4linux/video0
        device.bus = usb
        device.subsystem = video4linux
        device.vendor.id = 1bcf
        device.vendor.name = "Sunplus\\x20IT\\x20Co\\x20"
        device.product.id = 2286
        device.product.name = "FHD\ Camera"
        device.serial = Sunplus_IT_Co_FHD_Camera
        device.capabilities = :capture:
        device.api = v4l2
        device.path = /dev/video0
        v4l2.device.driver = uvcvideo
        v4l2.device.card = "FHD\ Camera"
        v4l2.device.bus_info = usb-70090000.xusb-2.1
        v4l2.device.version = 264588 (0x0004098c)
        v4l2.device.capabilities = 2216689665 (0x84200001)
        v4l2.device.device_caps = 69206017 (0x04200001)
    gst-launch-1.0 v4l2src ! ...

这个特别有趣,因为它展示了可能的分辨率、帧速率和视频格式(例如MJPEG/YUY2),以及所需的帧速率可以达到的情况。

在基于apt的系统中,你可以在gstreamer1.0-plugins-base-apps中找到它。 - kristopolous

这对我有效:

首先获取总线和设备ID:

lsusb

它将打印类似以下内容:

Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 011: ID 0ac8:3420 Z-Star Microelectronics Corp. Venus USB2.0 Camera
Bus 001 Device 002: ID 2109:3431 VIA Labs, Inc. Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

在我的情况下,我连接了Venus USB2.0相机。现在我运行以下命令: lsusb -s 001:011 -v | grep -E "Width|Height"
这将产生以下列表:
wWidth                            640
wHeight                           480
wWidth                            352
wHeight                           288
wWidth                            320
wHeight                           240
wWidth                            176
wHeight                           144
wWidth                            160
wHeight                           120
wWidth                            800
wHeight                           600
wWidth                           1280
wHeight                           960
wWidth                           1280
wHeight                          1024
wWidth                           1600
wHeight                          1200
wWidth( 0)                       1600
wHeight( 0)                      1200
wWidth( 1)                        352
wHeight( 1)                       288
wWidth( 2)                        320
wHeight( 2)                       240
wWidth( 3)                        176
wHeight( 3)                       144
wWidth( 4)                        160
wHeight( 4)                       120
wWidth( 5)                        800
wHeight( 5)                       600
wWidth( 6)                       1280
wHeight( 6)                       960
wWidth( 7)                       1280
wHeight( 7)                      1024
wWidth( 8)                        640
wHeight( 8)                       480

来源: raymii.org