Camera2 API переключение камеры во время записи

Я работаю с Camera2 API, и в моем приложении важно переключать камеру во время записи. После каждого переключения камеры я сохраняю видео фрагмент на диск, а после остановки записи объединяю видео в один, используя -f concat -safe 0 -i listPath -c copy finalPath команда FFmpeg для Android. Когда я открываю отдельный фрагмент видео, он выглядит правильно, но когда я открываю объединенное видео, видео, записанные на задней камере, поворачиваются на 180 градусов. Проблема только в объединенном видео.

В метатеге видео, если видео записано на задней камере, тег поворота имеет 90 градусов, в противном случае 270 градусов.

Как я понял, когда ffmpeg объединяет видео, оно автоматически поворачивает видео, если в метатегах есть другой тег "rotate".

Как я могу решить эту проблему?

PS Также я пытался использовать библиотеку MP4Parser для слияния, но у нее те же проблемы.
PPS -noautorotate параметр для ffmpeg мне не помогает.

1 ответ

Напротив, ffmpeg игнорировал ориентацию входных фрагментов, когда объединял их вместе. Это неизбежно, когда вы используете -c copy, Ваш выбор - вращать видео с одной из камер, прежде чем добавить его к результату. С точки зрения производительности это, к сожалению, эквивалентно полному транскодированию.

Альтернативный подход заключается в использовании MediaCodec вместо Recorder. Это больше кода на вашей стороне, но вы можете отказаться от ffmpeg и создать один фильм без постобработки.

Другие вопросы по тегам