Android 摄影机预览被压扁,但仅在录制时压扁

Android 摄影机预览被压扁,但仅在录制时压扁,android,camera,Android,Camera,这件事让我有点困惑。。在其中一款手机(三星Galaxy Ace风格)上,当MediaRecorder启动时,相机预览会被挤压。但是,在按下录制按钮之前,预览效果良好,并且在实际视频文件中分辨率良好 为什么当MediaRecorder启动时预览分辨率会改变,更重要的是,它会改变为哪种分辨率?这是录制过程中用于预览的视频大小吗?虽然这没什么意义。。总之,这些是我从相机上得到的值: 02-22 19:20:55.857: W/QCameraParameters(230): [PARM_DBG] Req

这件事让我有点困惑。。在其中一款手机(三星Galaxy Ace风格)上,当
MediaRecorder
启动时,相机预览会被挤压。但是,在按下录制按钮之前,预览效果良好,并且在实际视频文件中分辨率良好

为什么当MediaRecorder启动时预览分辨率会改变,更重要的是,它会改变为哪种分辨率?这是录制过程中用于预览的视频大小吗?虽然这没什么意义。。总之,这些是我从相机上得到的值:

02-22 19:20:55.857: W/QCameraParameters(230): [PARM_DBG] Requested preview size 800 x 480
02-22 19:20:55.857: W/QCameraParameters(230): [PARM_DBG] Requested video size 1280 x 720
02-22 19:20:55.857: W/QCameraParameters(230): [PARM_DBG] Requested picture size 2560 x 1920
02-22 19:20:55.857: W/QCameraParameters(230): [PARM_DBG] requested jpeg thumbnail size 512 x 384
02-22 19:20:55.857: W/QCameraParameters(230): [PARM_DBG] set optimal jpeg thumbnail size 512 x 384
02-22 19:20:55.857: W/QCameraParameters(230): [PARM_DBG] m_bNoDisplayMode = 0
02-22 19:20:55.857: W/QCameraParameters(230): [PARM_DBG] dualrecording-hint : 0 m_FaceAE=1 Camera ID=0
02-22 19:20:55.857: W/QCameraParameters(230): [PARM_DBG] ZSL = off
02-22 19:20:55.857: W/QCameraParameters(230): [PARM_DBG] prev_val = off
02-22 19:20:55.857: W/QCameraParameters(230): [PARM_DBG] str_val = off
02-22 19:20:55.857: W/QCameraParameters(230): [PARM_DBG] flash mode = off
02-22 19:20:55.857: W/QCameraParameters(230): [PARM_DBG] AEC lock = false
02-22 19:20:55.857: W/QCameraParameters(230): [PARM_DBG] AWB lock = false
02-22 19:20:55.857: W/QCameraParameters(230): [PARM_DBG] mHdrMode 0 mTakeLowlight 0
02-22 19:20:55.857: W/QCameraParameters(230): [PARM_DBG] live snapshot size 1280 x 720
编辑:

我根据相机的可用预览大小和曲面视图的大小计算预览大小。我根据相机返回的视频大小计算视频大小,首先选择16:9,如果失败,则默认为最大值。如果
getSupportedVideoSizes
返回的列表为空,我将返回
getSupportedPreviewSizes
。但是,此回退将通过视频大小逻辑,而不是预览大小逻辑。看那些文件

如果返回的列表不为空,则返回的列表将包含 返回的列表中必须至少有一个大小和一个大小 传递给摄像机应用程序的MediaRecorder.setVideoSize(),如果 摄像机被用作视频源。在这种情况下 预览可能与录制视频的分辨率不同 在录像过程中


因此,对于
getSupportedPreviewSizes
,此手机可能会返回null,我的回退会为我提供与预览时使用的分辨率不同的分辨率(因为列表通过不同的逻辑传递),因此我将视频大小设置为与不支持它的手机上的预览大小不同,从而在录制过程中挤压预览。虽然这只是目前的理论。

您是否获得支持的视频大小并选择最佳视频大小,然后在初始化媒体录制器时将其应用于媒体录制器?是的,这是日志中显示的视频大小。我将更新这个问题,提供更多关于我如何进行这些计算的细节