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 и создать один фильм без постобработки.