0

画面を縦向きモード (android:screenOrientation="portrait") に固定して、Android で MediaRecorder を使用してビデオをストリーミングしようとしています。カメラのハードウェアは、自然にランドスケープ モードに合わせられます。ローカル プレビューが縦向きモードで正しく表示されるように、プレビュー ビデオ表示を 90 度回転できます。ただし、キャプチャされたビデオはまだ 90 度です。

   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 です。

キャプチャしたビデオを回転する方法についてのアイデアはありますか? それとも不可能ですか?

4

2 に答える 2

2

これを使用してみてください:

mediaRecorder.setOrientationHint(rotation); // eg rotation=270
于 2012-01-14T20:11:03.170 に答える
1

私はあなたの問題を知っています、

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

ありがとうございました

于 2015-03-31T10:14:54.387 に答える