录制

时间:2016-02-23 18:54:04

标签: android camera

问题出现在我的Nexus 6P设备上。在完成所有动作以检测最佳预览,宽高比,视频大小等后,我最终得到以下信息:

SurfaceView dimens 2392x1440(全屏)
使用相机预览分辨率的宽高比重新测量后,根据计算方法,此值将更改为2560x1440或2392x1351。

相机预览尺寸:1920x1080

使用setPreviewSize()在相机参数上设置: params.setPreviewSize(mOptimalPreviewSizes.width, mOptimalPreviewSizes.height);

媒体录制器视频大小:1920x1080(由设置强制)

这是在媒体记录器上设置的:
             mMediaRecorder.setVideoSize(mOptimalVideoSize.width, mOptimalVideoSize.height);

当我点击录制按钮时,相机预览会放大',即调整视频大小。如果我将视频大小设置更改为例如3840x2160,则预览工作正常,无需调整大小。

我的印象是,可以将视频大小分别设置为预览大小,所以我有点困惑,为什么我会看到这个,以及如何解决这个问题。

编辑:

例如,OpenCamera似乎能够将预览表面分辨率与视频分辨率分开。 https://sourceforge.net/p/opencamera/code/ci/master/tree/src/net/sourceforge/opencamera/

为了确保,我在video_recorder.prepare();之前添加了一行来设置自定义视频尺寸(video_recorder.setVideoSize(640,480);)。预览表面仍在2392x1351附近全屏测量,相机预览仍设置为1920x1080。我还对结果视频进行了双重检查,预期为640x480。不幸的是,我在代码中看不到任何可以表明如何实现的内容。

编辑2:

我也注意到这个'缩放''动作总是发生在特定的分辨率/值上。无论我是以1920x1080还是320x200进行录制,预览都会变焦并在录制开始前丢失大约一厘米的可用图像。结束视频具有与分辨率相关的预期裁剪。

1 个答案:

答案 0 :(得分:0)

问题似乎与视频稳定有关。我认为这实际上是有道理的,因为稳定防抖通常需要裁剪,当预览分辨率已经明显低于表面大小时,它会使图片“跳跃”或“缩放”。删除视频稳定功能可以解决问题。