Android 自定义相机应用程序时如何将视频旋转到纵向?

Android 自定义相机应用程序时如何将视频旋转到纵向?,android,Android,我自定义了一个摄像头应用程序: 我将相机显示纵向设置为: mCamera.setDisplayOrientation(90); 摄像头显示纵向正常,但文件结果(视频)不显示纵向。 我尝试以下代码: Camera.Parameters parameters = mCamera.getParameters(); parameters.setRotation(90); mCamera.setParameters(parameters

我自定义了一个摄像头应用程序: 我将相机显示纵向设置为:

mCamera.setDisplayOrientation(90);
摄像头显示纵向正常,但文件结果(视频)不显示纵向。 我尝试以下代码:

 Camera.Parameters parameters = mCamera.getParameters();
            parameters.setRotation(90);         
            mCamera.setParameters(parameters);
但这并不好

为什么??
如何解决这个问题?谢谢。

用于
setDisplayOrientation()的手册上说:

设置预览显示的顺时针旋转角度

然后

不会影响在预览帧(字节[],照相机)、JPEG图片或录制的视频中传递的字节数组的顺序


您不能旋转保存的视频流,只能预览。

这里是一个演示,可用于纵向和横向查看

来源

演示 我知道你的问题

视频使用
摄像机中的
媒体记录器
,因此您需要
旋转媒体记录器
。使用以下代码可以解决您的问题

/**
 * 
 * @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());

谢谢你

这是不可能旋转的。试试我的答案吧!!!!!这可能有助于你了解我手机的默认设置。好的。我认为它可以在创建相机时设置属性;相机已经预览好了,为什么结果不是相同的相机视图?你能给我举个例子吗?见编辑后的答案。为什么你还没有阅读文档?你试过录制视频吗?I测试:摄像头显示纵向正常,但文件结果(视频)不显示纵向