Фронтальная камера Android записывает видео, но воспроизводит в перевернутом виде!

Мне удалось создать приложение для Android для записи видео, но проблема связана с ориентацией видео с передней камеры. Результат не соответствует требованиям. Он автоматически поворачивается.

Ориентация приложения альбомная. Итак, мне нужно записывать с помощью передней камеры в ландшафтном режиме.

Ничего не получается.


person Nishant Mendiratta    schedule 16.10.2012    source источник


Ответы (3)


Вы можете посмотреть, как AOSP Видеокамера реализует это:

    if (info.facing == CameraInfo.CAMERA_FACING_FRONT) {
        rotation = (info.orientation - mOrientation + 360) % 360;
    } else {  // back-facing camera
        rotation = (info.orientation + mOrientation) % 360;
    }

Более подробная информация содержится в мом ответе на другой вопрос здесь.

person Joe    schedule 16.10.2012
comment
я пытаюсь использовать mrec.setOrientationHint(0); в функции private void startRecording(), но это не позволяет мне запустить видео - person Nishant Mendiratta; 16.10.2012
comment
что такое ориентация?? а не могли бы вы предоставить полный код? я пытаюсь восстановить его за последние два дня - person Rahul Khurana; 07.07.2017
comment
@RahulKhurana, я обновил устаревшую ссылку omapzoom на androidxref, чтобы вы могли посмотреть полный код. - person Joe; 09.07.2017
comment
Привет, спасибо за ваш код, но в итоге я получил библиотеку afollestad material-camera на github, потому что я опаздывал, но я обязательно посмотрю ваш код - person Rahul Khurana; 10.07.2017

Добавьте это, где вы начинаете запись видео ниже setVideoSource

mediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
if (cameraId == 1) {
    mediaRecorder.setProfile(CamcorderProfile
        .get(CamcorderProfile.QUALITY_LOW));
    mediaRecorder.setOrientationHint(270);
} else if (cameraId == 0) {
    mediaRecorder.setProfile(CamcorderProfile
        .get(CamcorderProfile.QUALITY_HIGH));
    mediaRecorder.setOrientationHint(orientation);
}

mediaRecorder.setOrientationHint(270); — перевернутая передняя камера.

person android_beginner    schedule 26.04.2016
comment
Я пытался. но это просто создает зеркальное отображение видео. - person Rahul Khurana; 07.07.2017

Проверьте идентификатор камеры, если он равен 1, следуйте за изменением ориентации для медиаплеера «setOrientationHit()».

private static final SparseIntArray REAR_ORIENTATIONS = new SparseIntArray();
static {
    REAR_ORIENTATIONS.append(Surface.ROTATION_0, 270);
    REAR_ORIENTATIONS.append(Surface.ROTATION_90, 0);
    REAR_ORIENTATIONS.append(Surface.ROTATION_180, 90);
    REAR_ORIENTATIONS.append(Surface.ROTATION_270, 180);
}

Затем в предварительном просмотре медиаплеера готовятся методы:

if(cameraId == FRONT_CAMERA) {
     mMediaRecorder.setOrientationHint(REAR_ORIENTATIONS.get(rotation));
}
person Sampath Kumar    schedule 12.02.2019