您的位置:首页 > 其它

关于视频录制预览摄像头拉伸问题

2017-07-22 18:28 465 查看
我再写项目的时候,后置摄像头预览不被拉伸,前置摄像头拉伸

我在切换前后摄像头的方法中,当后置摄像头变为前置摄像头

//现在是后置,变更为前置
if (cameraInfo.facing == Camera.CameraInfo.CAMERA_FACING_FRONT) {//代表摄像头的方位,CAMERA_FACING_FRONT前置      CAMERA_FACING_BACK后置
mCamera.stopPreview();//停掉原来摄像头的预览
mCamera.release();//释放资源
mCamera = null;//取消原来摄像头
mCamera = Camera.open(i);//打开当前选中的摄像头
ViewGroup.LayoutParams layoutParams = preview.getLayoutParams();

try {
mCamera.setPreviewDisplay(mPreview.getHoder());//通过surfaceview显示取景画面
//                        mCamera.setDisplayOrientation(90);
//                        Camera.Parameters parameters=mCamera.getParameters();
//                        mCamera.setDisplayOrientation(getPreviewDegree(ChatRoomActivity.instance));// 设置相机的方向
//                        parameters.set("orientation", "portrait");
//                        mCamera.setParameters(parameters);

try {

//摄像头画面显示在Surface上
if (mCamera != null) {
Camera.Parameters parameters = mCamera.getParameters();
List<Camera.Size> sizes = parameters.getSupportedPreviewSizes();
int[] a = new int[sizes.size()];
int[] b = new int[sizes.size()];
for (int y = 0; y < sizes.size(); y++) {
int supportH = sizes.get(y).height;
int supportW = sizes.get(y).width;
a[y] = Math.abs(supportW - screenHeight);
b[y] = Math.abs(supportH - screenWidth);
Log.d(TAG,"supportW:"+supportW+"supportH:"+supportH);
}
int minW=0,minA=a[0];
for( int y=0; y<a.length; y++){
if(a[y]<=minA){
minW=y;
minA=a[y];
}
}
int minH=0,minB=b[0];
for( int y=0; y<b.length; y++){
if(b[y]<minB){
minH=y;
minB=b[y];
}
}
Log.d(TAG,"result="+sizes.get(minW).width+"x"+sizes.get(minH).height);
List<Integer> list = parameters.getSupportedPreviewFrameRates();
parameters.setPreviewSize(sizes.get(minW).width,sizes.get(minH).height); // 设置预览图像大小
parameters.setPreviewFrameRate(list.get(list.size() - 1));
mCamera.setParameters(parameters);
mCamera.setDisplayOrientation(90);
mCamera.startPreview();
}
} catch (Exception e) {
if (mCamera != null)
mCamera.release();
mCamera = null;
}

} catch (IOException e) {
e.printStackTrace();
}

mCamera.startPreview();//开始预览
cameraPosition = 0;
break;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: