Search code examples
androidcameraandroid-cameraandroid-camera2camera2

How to use android camera2 api to record 60 fps video with fixed exposure time


I want to implement a app to record 60 fps with fixed exposure time. As device I have the Google Pixel. Since its native camera app can do 60 fps and it has hardware level LEVEL_3, I thought this won't be a problem but I can't get it working. With getSupportedPreviewFpsRange() (from camera api) I get ranges [15, 15], [24, 24], [7, 30], [30, 30] and with getHighSpeedVideoFpsRangesFor (from camera2 api) I get ranges [30, 120], [120, 120], [30, 240], [240, 240], [240, 240]. When I set [60, 60] to CONTROL_AE_TARGET_FPS_RANGE I get error "Fps range [60, 60] in the request is not a supported high speed fps range".

Is it even possible for a custom app to record 60 fps video?

If not, how is it by 120 fps? (I have got 120 fps recording working, but when I set CONTROL_AE_MODE off and manually set the SENSOR_EXPOSURE_TIME and SENSOR_SENSITIVITY, the frame rate again reduces to 30 fps)


Solution

  • 60fps recording on Pixel can be done in normal capture settings - take a look at CONTROL_AE_AVAILABLE_TARGET_FPS_RANGES, and just create a normal capture session. You will have to be careful and not set up too high of a resolution as your outputs, since 60fps can't be done at above 1080p, if I remember correctly.

    You can confirm that via the StreamConfigurationMap for the sizes/formats that you're aiming to use.