Захваченное видео на Android не будет поворачиваться в портрет - PullRequest
0 голосов
/ 13 января 2012

Я пытаюсь транслировать видео с помощью MediaRecorder на Android с экраном, установленным в портретный режим (android: screenOrientation = "Portrait"). Аппаратное обеспечение камеры естественно выровнено по горизонтальному режиму. Я могу повернуть предварительный просмотр видео на 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.

Есть идеи, как вращать захваченное видео? Или это даже невозможно?

Ответы [ 2 ]

2 голосов
/ 15 января 2012

Попробуйте использовать это:

mediaRecorder.setOrientationHint(rotation); // eg rotation=270
1 голос
/ 31 марта 2015

Я знаю вашу проблему,

Использование видео 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());

Спасибо

...