在Android上捕获的视频不会旋转到肖像
我试图在Android上使用MediaRecorder将视频流固定到肖像模式(android:screenOrientation =“portrait”)。相机硬件自然与横向模式对齐。我可以将预览视频显示旋转90度,以便在纵向模式下正确显示本地预览。然而,拍摄的视频仍然是90度:在Android上捕获的视频不会旋转到肖像
Camera mCamera;
MediaRecorder mMediaRecorder;
...
mCamera.setDisplayOrientation(90);
mCamera.setPreviewDisplay(holder);
mCamera.startPreview();
Parameters params = mCamera.getParameters();
params.setRotation(90);
mCamera.setParameters(params);
mCamera.unlock();
mMediaRecorder.setCamera(mCamera);
的params.setRotation似乎有任何对拍摄的视频没有任何影响。我的目标API是Android 2.2。我的测试硬件是Android 3.1。
有关如何旋转捕获的视频的任何想法?或者甚至不可能?
尝试使用这样的:
mediaRecorder.setOrientationHint(rotation); // eg rotation=270
这给我一个错误'java.lang.RuntimeException:setParameter失败。'在三星Galaxy S Android 2.3.3 – sgallego 2012-03-28 11:50:11
@sgallego你需要在mediaRecorder.prepare()之前调用它。重置()它,如果需要的话。 – harshitgupta 2016-05-18 22:49:31
我知道您的问题,
视频使用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());
谢谢
出于好奇,为什么'params.setRotation ...'经过180? 180度不会把它变成一个倒退的景观视图吗?它不应该是'params.setRotation(90)'? – Mxyk 2012-01-13 14:05:58
@MikeGates我之前正在尝试各种值,看看有没有什么效果。已编辑片段回到所需的值。感谢您指出。 – barkside 2012-01-13 14:25:09
你是否已经解决了这个问题? – mum 2014-01-06 09:41:24