setOrientationHint вращает видео против часовой стрелки на фронтальных камерах некоторых телефонов (HTC)

Проблема. Некоторые устройства Android (перечисленные в конце вопроса) демонстрируют непредвиденное поведение при использовании функции setOrientationHint(int degrees) для видео, снятых на фронтальную камеру. Ожидаемое поведение - поворот видео по часовой стрелке, но эти устройства вращают видео против часовой стрелки.

Моя цель: определить переменную в настройках камеры или ориентации оборудования, которая позволяет мне предсказуемо узнать, когда это произойдет. В частности, я бы не хотел, чтобы эти телефоны были в моем коде специальным корпусом!

Дальнейшее объяснение: я записываю видео, используя стандартный объект MediaRecorder, и при подготовке к записи я установил ориентацию видео с помощью _ 3_. В документации для setOrientationHint() для параметра degrees указано следующее:

градусы –– угол поворота по часовой стрелке в градусах. Поддерживаемые углы: 0, 90, 180 и 270.

Функция предназначена для добавления матрицы композиции, содержащей угол поворота, чтобы видеопроигрыватель мог отображать видео должным образом. Итак, что я делаю, так это то, что я получаю ориентацию оборудования камеры с помощью CameraInfo class и используйте его как параметр degrees в setOrientationHint fn. (Я пробовал вариант этого кода, используя AOSP в качестве руководства, но у меня был точно такой же результат.)

Реальный пример. Аппаратная ориентация фронтальной камеры Samsung Galaxy S3 (как и большинства других) будет составлять 270, поэтому я использую это при записи, и полученное видео отображается правильно. HTC Vivid аналогичным образом вернет аппаратную ориентацию 270 для той же камеры, но будет отображаться правильно только в том случае, если я использую 90 в качестве параметра degrees в setOrientationHint fn. Если я использую аппаратную ориентацию 270, как и любой другой телефон, видео будет перевернутым.

NB: функция setOrientationHint() включает предупреждение:

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

Однако это не, что происходит, потому что я могу легко исправить эту проблему на этих телефонах, если подделаю ее и введу 90 вместо 270.

В телефонах, которые я видел, особенно характерна эта проблема: HTC Vivid (PH39100) под управлением Android 4.0.3, HTC EVO 4G (PG86100) под управлением Android 4.0.3, HTC Thunderbolt (ADR6400L) под управлением Android 2.3.4 . Обратите внимание, что все они телефоны HTC. Возможно, кто-то в HTC ошибочно принял правую стрелку за против часовой стрелки.


person Daniel Smith    schedule 07.02.2013    source источник
comment
Дэниел, ты нашел какое-нибудь решение для этого? Я с той же проблемой.   -  person Adil Malik    schedule 04.07.2013
comment
Взгляните на stackoverflow.com/a/39271585/1495839 Вы можете найти решение   -  person Amit    schedule 01.09.2016


Ответы (1)


Да, телефоны HTC вращаются не в том направлении, в котором расположены фронтальные камеры. Вместо того, чтобы угадывать, я добавил экран настроек, который делал бы два снимка, а второй поворачивался на 90 градусов. Затем пользователь мог продолжать нажимать следующим, пока я циклически перебирал разные направления вращения и комбинации углов, пока оба изображения не были ориентированы одинаково.

person Jess Anders    schedule 05.03.2013
comment
Очевидно, есть способы обойти это, разрешив пользователям устанавливать индивидуальную ориентацию, но я ищу конкретный способ узнать, что телефон сделает это. Это проблема не всех устройств HTC - только некоторых. - person Daniel Smith; 05.03.2013
comment
Вот почему я выбрал решение для настроек. Со всеми устройствами вы столкнетесь со многими устройствами с проблемами вращения камеры, так что с таким же успехом можно быть гибкими. Только мои 2 цента ... - person Jess Anders; 05.03.2013
comment
Я также выбрал решение с настройками, но мне это решение очень неудобно, и я не считаю, что оно удовлетворительно решает этот вопрос (хотя я действительно считаю, что его стоит оставить здесь в качестве ответа, чтобы быть подробным - следовательно, от меня нет -1) . У пользователей в этом сценарии будет ужасный первый опыт работы с приложением камеры, многие даже не подозревают, что им следует проверить меню настроек, чтобы решить проблему. Этот ужасный UX, скорее всего, повлияет на первое впечатление тысяч пользователей. - person Daniel Smith; 05.03.2013
comment
Согласен, не идеально. Иногда бывает сложно найти идеальное решение, когда дело касается ошибок и несоответствий производителя. - person Jess Anders; 05.03.2013