自定义相机应用程序如何将视频转换为纵向?

时间:2014-01-09 09:13:44

标签: android

我定制了一款相机应用: 我将相机显示肖像设置为:

mCamera.setDisplayOrientation(90);

相机显示肖像确定,但文件结果(视频)不显示肖像。 我试试代码:

 Camera.Parameters parameters = mCamera.getParameters();
            parameters.setRotation(90);         
            mCamera.setParameters(parameters);

但不行。

为什么? 怎么解决这个问题?感谢。

3 个答案:

答案 0 :(得分:1)

setDisplayOrientation()手册说:

  

以度数

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

然后

  

会影响onPreviewFrame(byte [],Camera),JPEG图片或录制视频中传递的字节数组的顺序。

您无法旋转已保存的视频流,只能预览。

答案 1 :(得分:0)

答案 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());

谢谢