我定制了一款相机应用: 我将相机显示肖像设置为:
mCamera.setDisplayOrientation(90);
相机显示肖像确定,但文件结果(视频)不显示肖像。 我试试代码:
Camera.Parameters parameters = mCamera.getParameters();
parameters.setRotation(90);
mCamera.setParameters(parameters);
但不行。
为什么? 怎么解决这个问题?感谢。
答案 0 :(得分:1)
setDisplayOrientation()
手册说:
以度数
设置预览显示的顺时针旋转
然后
此不会影响onPreviewFrame(byte [],Camera),JPEG图片或录制视频中传递的字节数组的顺序。
您无法旋转已保存的视频流,只能预览。
答案 1 :(得分:0)
这是一个同时兼顾肖像和风景的演示,请点击此处
源 https://github.com/pikanji/CameraPreviewSample
演示 https://play.google.com/store/apps/details?id=net.pikanji.camerapreviewsample&hl=en
答案 2 :(得分:0)
我知道你的问题,
来自Media Recorder
的视频使用Camera
,因此您需要rotate Media Recorder
。使用以下代码应解决您的问题。
/**
*
* @param mMediaRecorder
* @return
*/
public static MediaRecorder rotateBackVideo(MediaRecorder mMediaRecorder) {
/**
* Define Orientation of video in here,
* if in portrait mode, use value = 90,
* if in landscape mode, use value = 0
*/
switch (CustomCamera.current_orientation) {
case 0:
mMediaRecorder.setOrientationHint(90);
break;
case 90:
mMediaRecorder.setOrientationHint(180);
break;
case 180:
mMediaRecorder.setOrientationHint(270);
break;
case 270:
mMediaRecorder.setOrientationHint(0);
break;
}
return mMediaRecorder;
}
应在prepare()
方法之前添加:
// Step 5: Set the preview output
/**
* Define Orientation of image in here,
* if in portrait mode, use value = 90,
* if in landscape mode, use value = 0
*/
CustomCamera.mMediaRecorder = Utils.rotateBackVideo(CustomCamera.mMediaRecorder);
CustomCamera.mMediaRecorder.setPreviewDisplay(mCameraPreview.getHolder().getSurface());
谢谢