CameraServer.getInstance() setting resolution and fps


#1

We are using iterative robot and we had trouble setting resolution and for our Microsoft lifecam. If we set a lower resolution, it would pull more bandwidth. How do I fix this? I am using shuffleboard and directly pulling stream from the camera server tab thing. We stopped using the lifecam during our competition because it pulled around 5mbps when we set it to 15fps, 320x180. Anything helps. Thanks.


#2

Here’s how we use our lifecam:

ballCamera = CameraServer.getInstance().startAutomaticCapture("Rear Facing Camera", 0); ballCamera.setResolution(640, 480); ballCamera.setConnectionStrategy(ConnectionStrategy.kKeepOpen);

That was less than 1mbps streaming to Shuffleboard. Make sure that you don’t change anything on the Shuffleboard side, just leave the defaults and -1 as the compression so you don’t waste CPU cycles re-compressing the mjpg stream.


#3

I will try that out when I get the chance. Thank you!


#4

From my knowledge, CSCore will default to the lowest supported resolution of the camera.


#5

Make sure the resolution and framerate you are setting is supported by your camera. The supported settings are shown on the cameraserver webpage.


#6

I am running two Microsoft Lifecams simply for a video stream(no vision processing) and am not setting a resolution. I just set a framerate and that does the job. For example:

UsbCamera camera = CameraServer.getInstance().startAutomaticCapture();
  camera.setFPS(8);
UsbCamera camera2 = CameraServer.getInstance().startAutomaticCapture();
  camera2.setFPS(12);

My cameras hover around 1Mbps with this setup. I used to set my resolution and I had much more lag in my feed as well as higher bandwidth usage. Hope this helps!!