Подтвердить что ты не робот

Android flip front camera зеркало перевернуло видео

Я пытаюсь записать видео с передней камеры Android, одновременно отображая на поверхности.

То, что я обнаружил с передней камерой, заключается в том, что зеркало переворачивает видео во время записи, даже если вид на поверхности показывает нормальный вид.

Есть ли способ предотвратить это или исправить?

Я читал о других статьях stackoverflow, таких как Как сохранить андроид от инвертирования изображения с передней камеры?

Но, похоже, речь идет только о съемке с передней камерой и обращении изображения, которое я уже исправил с использованием матрицы. Однако, похоже, использование матрицы для видео не работает.

4b9b3361

Ответ 1

У меня нет решения, но мне кажется, что ключ:

MediaRecorder.setOrientationHint

Устанавливает подсказку ориентации для воспроизведения выходного видео. Этот метод следует вызывать перед подготовкой(). Этот метод не будет приводить к поворотному кадру исходного видео во время видеозаписи, но для добавления матрицы композиций, содержащей угол поворота в выходном видео, если выходной формат OutputFormat.THREE_GPP или OutputFormat.MPEG_4, так что видеоплеер может выбрать правильную ориентацию для воспроизведения. Обратите внимание, что некоторые видеоплееры могут игнорировать матрицу компо- зиции в видео во время воспроизведения.

Я записываю видео в H264, и он не работает для меня:( Но это может помочь вам. сделал, чтобы попробовать?

Ответ 2

В документации метода setDisplayOrientation (http://developer.android.com/reference/android/hardware/Camera.html) мы можем найти:

Обратите внимание, что предварительный просмотр передних камер перевернут горизонтально перед вращением, то есть изображение отражается вдоль центральной вертикальной оси датчика камеры. Таким образом, пользователи могут видеть себя как взгляд в зеркало.

Таким образом, ваш экран предварительного просмотра должен быть перевернут, но не записанное видео. С дисплеем предварительного просмотра вы видите себя в зеркале? Если это так, все работает нормально.

Ответ 3

В моем случае мне просто нужно горизонтально-флип при воспроизведении. При записи он уже перевернулся для зеркального эффекта, и, как я вижу, его невозможно изменить. Однако ниже код решил мою проблему при игре.

videoPlayer.setScaleX(-1);

Ответ 4

Вам нужно применить матричное преобразование, например:

if(isFrontCamera) {
    m.preScale(-ratio, ratio);
} else {
    m.preScale(ratio, ratio);
}

Предполагая, что вы не изменяете размер ничего, рацион будет равен 1, что сделает предварительную предварительную настройку передних камер.