【发布时间】:2021-12-23 00:38:07
【问题描述】:
我一直在做一个项目,通过一个光发射器(LED 屏幕)传输数据,该光发射器显示带有编码信息的视频和一个光电探测器阵列作为接收器,在这种情况下,一个 Android 相机由一个很多光电二极管。
要成功执行数据传输,帧视频的显示速率和相机的捕获速率(即帧速率)之间的同步必须接近完美。
所以,我开发了一个代码,它可以更改和修复 Android 相机帧速率,还可以做其他事情。实现Camera参数修改的部分如下:
private boolean prepareVideoRecorder(){
mCamera = getCameraInstance();
mediaRecorder = new MediaRecorder();
Camera.Parameters parameters = mCamera.getParameters();
parameters.setPreviewFpsRange(15000,15000);
parameters.setVideoStabilization(true);
parameters.setAutoExposureLock(true);
parameters.setAutoWhiteBalanceLock(true);
parameters.setFocusMode(Camera.Parameters.FOCUS_MODE_FIXED);
mCamera.setParameters(parameters);
mCamera.unlock();
mediaRecorder.setCamera(mCamera);
mediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
mediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.DEFAULT);
mediaRecorder.setVideoSize(1280,720);
mediaRecorder.setVideoFrameRate(15);
mediaRecorder.setMaxDuration(25000);
mediaRecorder.setOutputFile(getOutputMediaFile().toString());
mediaRecorder.setPreviewDisplay(cameraPreview.getHolder().getSurface());
但即使这样做,同步似乎也不是很好,特别是因为 Android 相机帧速率不是恒定的。我使用了已弃用的 Camera1 API。那么,有谁知道我怎样才能保持 Android Camera 帧速率恒定?
也许使用 Camera2 是一种选择,但我不知道我应该如何开始。
从现在开始,感谢您的帮助!
【问题讨论】:
标签: android camera android-camera android-camera2 android-camera-intent