2017-04-26 93 views
0

고정 노출 시간으로 60fps를 기록하는 앱을 구현하고 싶습니다. 기기로서 Google Pixel을 보유하고 있습니다. 기본 카메라 앱이 60fps를 수행 할 수 있고 하드웨어 레벨 LEVEL_3을 (를) 갖고 있기 때문에 문제가되지 않을 것이라고 생각했지만 작동하지 않습니다. getSupportedPreviewFpsRange() (카메라 api에서) 범위 [15, 15], [24, 24], [7, 30], [30, 30]getHighSpeedVideoFpsRangesFor (카메라 2 API에서)로 범위를 얻습니다. 범위는 [30, 120], [120, 120], [30, 240], [240, 240], [240, 240]입니다. [60, 60]CONTROL_AE_TARGET_FPS_RANGE으로 설정하면 "요청의 Fps 범위 [60, 60]이 지원되는 고속 fps 범위가 아닙니다."라는 오류 메시지가 나타납니다.android camera2 api를 사용하여 고정 노출 시간으로 60fps 비디오를 기록하는 방법

맞춤 앱이 60fps 비디오를 녹화 할 수 있습니까?

그렇지 않다면 120fps로 어떻게됩니까? (I는 초당 120 프레임 녹화 작업을 가지고,하지만 난 CONTROL_AE_MODE 오프를 설정할 때 수동으로 SENSOR_EXPOSURE_TIMESENSOR_SENSITIVITY 설정, 프레임 속도가 다시 30 개 프레임으로 감소) 픽셀에 기록

답변

2

초당 60 프레임이 정상 캡처 설정에서 수행 할 수 있습니다 - 걸릴 CONTROL_AE_AVAILABLE_TARGET_FPS_RANGES을보고 일반 캡처 세션을 만듭니다. 내가 정확하게 기억한다면 60fps가 1080p를 초과하여 수행 될 수 없으므로 신중해야하고 출력물의 해상도를 너무 높게 설정하지 않아야합니다.

StreamConfigurationMap을 통해 사용하려는 크기/형식을 확인할 수 있습니다.

+0

thx Eddy, 나는 비디오 녹화로 YUV 캡처 (해상도 1920x1080)까지 성공적으로 60fps를 달성했습니다. 가장 큰 크기 (4048x3036)와 가장 작은 크기 (160x120)에 대해 YUV_420_88에 대한 minal 프레임 지속 시간을 확인했기 때문에 YUV에 놀랍습니다. 그리고 33333333 ns입니다. 그러나 크기 (1920x1080)의 경우 실제로 16666666ns입니다. 그러나'CONTROL_AE_MODE'와'CONTROL_MODE'를 off로 설정하여 노출 시간과 ios 값을 수동으로 설정하면 프레임 속도가 다시 30fps로 떨어집니다 : 내가 잘못 했습니까? 자동 노출로 60fps 만 작동합니까? – Jian

+0

프레임 재생 시간 (https://developer.android.com/reference/android/hardware/camera2/CaptureRequest.html#SENSOR_FRAME_DURATION)을 설정 했습니까? 이것이 세 번째 수동 제어입니다. 당신은 스스로 60fps로 설정해야합니다. 기본값은 1/60s가 아닌 1/30s입니다. –

+0

yes'SENSOR_FRAME_DURATION'을 16666666으로 설정했습니다. 이것은'getOutputMinFrameDuration (ImageFormat.YUV_420_888, new Size (1920, 1080)) '에서 얻은 정확한 값입니다. 여기에 설명 된 단계가 있습니다. [stackoverflow.com/questions/28293078/how-to-control-iso-manually-in-camera2-android](http://stackoverflow.com/questions/28293078/how-to-control-iso-manually-in-camera2-android] to-control-iso-in-camera-in-camera2-android)을 사용하여 프리뷰 세션과 캡처 세션 모두에서 30fps로 떨어졌습니다. – Jian