What are the maximum resolutions and frame rates for USB camera that a Android device supports. I read that the standard is called as UVC (Universal Video Class).

Is this support dependant on the Android version? Would the type of connector make a difference USB-C vs micro USB?

The best resource I found was External USB Cameras

On that page its mentioned,

With support for webcams, devices can be used in lightweight use cases such as video chatting and photo kiosks. This feature doesn't replace typical internal camera HALs on Android phones and isn't designed to support performance-intensive, complex tasks involving high-resolution and high-speed streaming, AR, and manual ISP/sensor/lens control.

Also a list is given at the end of the articles regarding frame rates and resolutions as if they were extracted from some code so I'm not sure what they are and whether to consider them as definitive.

<!-- List of maximum fps for various output sizes -->
<!-- Any image size smaller than the size listed in Limit row will report
    fps (as minimum frame duration) up to the fpsBound value. -->
    <!-- width/height must be increasing, fpsBound must be decreasing-->
    <Limit width="640" height="480" fpsBound="30.0"/>
    <Limit width="1280" height="720" fpsBound="15.0"/>
    <Limit width="1920" height="1080" fpsBound="10.0"/>
    <!-- image size larger than the last entry will not be supported-->
  • ok,, thanks for pointing that out, I'm specifically looking for max limits though, for instance would a 1080p webcam successfully stream full frame video to a Android device? If so at what frame rate? Also what about camera resolutions larger than 1080p, eg. a 5MP camera. Jun 25 '20 at 10:10

It depends on the external camera provider specs.

The USB camera HAL process is part of the external camera provider that listens to USB device availability and enumerates external camera devices accordingly.

Webcams generally support USB video class (UVC) drivers and on Linux, the standard Video4Linux (V4L) driver is used to control UVC cameras.

Probably, what's quoted is typical or frequently found values but if you want specific information you would need to dig into the code of the device + camera provider.

As asked in the comments maximum limits can be gleaned from

  • the camera specs and codes

  • format used (for example UVC format itself has multiple variations - see linked wiki above)

but whether the device uses full capability or not is the important point.

You would find tons of rooted means and Magisk modules that improve the camera performance with the same device and camera - it's only possible because ROM didn't build in those features.

  • Would this mean that I can connect a FHD (1080p) camera to a non-rooted android phone USB port and get video at 30fps? Is there mechanism that the low level API's provide to get data from the USB port. Wouldn't there be upper limit for the USB 2.0 speed itself since it maxes out theoretically at 480 Mbps. Jun 25 '20 at 15:26
  • Sorry, I can't answer that - beyond my knowledge
    – beeshyams
    Jun 25 '20 at 15:50

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.