Linux: Getting Information About Your Video Device

I was about to teach Skype about how to use HQ video transmission, means a transmission where your video resolution is more than 176×144 or 352×288 (PAL). I’ve read, that adding these lines into your $HOME/.Skype/<your skype user name here>/.config.xml

<Video>
<CaptureHeight>480</CaptureHeight>
<CaptureWidth>640</CaptureWidth>
</Video>

into the <Lib> section, would Skype make HQ Video transmission. But it didn’t for some reasons. Some mentioned to use also the <Fps> tag, but also gave the advice to check if the hardware even supports such frame-rates and resolutions.

But how? I’ve been looking a bit and found more or less three solutions for retrieving information for a video device, in my case a webcam bound to /dev/video0


  1. lsusb -v | egrep -i "(width|height)"


    This one actually doesn’t give you the fps rate, but an idea about the lsusb -v command. A lot information is listed there. Just have a look yourself – use | more to page through the output


  2. v4l-info | egrep -i "(width|height)"


    The Video for Linux tools v4l-info gives you also detailed information about your video0 device. Leave out the grep for the full list.


  3. luvcview -L


    This is my favourite. This command, like the v4l-info has to be installed from the Ubuntu repo first. It gives you a nice list of all available resolutions and supported frame-rates:

    luvcview 0.2.4
    
    SDL information:
      Video driver: x11
      A window manager is available
    Device information:
      Device path:  /dev/video0
    /dev/video0 does not support read i/o
    { pixelformat = 'YUYV', description = 'YUV 4:2:2 (YUYV)' }
    { discrete: width = 640, height = 480 }
            Time interval between frame: 1/30, 1/15,
    { discrete: width = 352, height = 288 }
            Time interval between frame: 1/30, 1/15,
    { discrete: width = 320, height = 240 }
            Time interval between frame: 1/30, 1/15,
    { discrete: width = 176, height = 144 }
    .
    .
    .
    { discrete: width = 176, height = 144 }
            Time interval between frame: 1/15, 2/15,
    { discrete: width = 160, height = 120 }
            Time interval between frame: 1/15, 2/15,
    { discrete: width = 800, height = 600 }
            Time interval between frame: 1/15, 2/15,
    { discrete: width = 1280, height = 960 }
            Time interval between frame: 1/15, 2/15,
    { discrete: width = 1280, height = 1024 }
            Time interval between frame: 1/15, 2/15,
    { discrete: width = 1600, height = 1200 }
            Time interval between frame: 1/15, 2/15,
    

Now I could start with the Skype (2.1beta) HQ (640×480) transmission experiments on a more proven ground.
If anybody knows also nice methods to retrieve video informations about a device, would be nice to share it with me. Thanks.