Как вращать видео с помощью FFmpeg в Linux
Сегодня мне захотелось объединить видео, снятые со смартфона, и сделать один видеофайл со звуком. Но дело в том, что некоторые видео снимаются в портретном режиме, а некоторые — в альбомном. Прежде чем объединить файлы, я подумал, что было бы лучше выровнять все видеофайлы по одной ориентации (т.е. режиму). Конечно, существует множество инструментов с графическим интерфейсом и медиаплееры, такие как Smplayer, VLC, имеющие встроенную функцию поворота видео. Но я предпочитаю утилиту командной строки. Я знаю, как использовать FFmpeg для выполнения различных операций, таких как преобразование файлов в другой формат, обрезка, разделение и объединение файлов и многое другое. Я уже собрал наиболее часто используемые команды FFmpeg для начинающих и разместил их в этом руководстве. Однако до сегодняшнего дня я не знаю, как вращать видео с помощью FFmpeg. Если вы когда-нибудь хотели повернуть видео с помощью FFmpeg, следуйте инструкциям ниже.
Убедитесь, что в вашей системе установлена последняя версия FFmpeg. FFmpeg доступен в репозиториях по умолчанию многих популярных операционных систем Linux, поэтому установка не составит большого труда. Если вы не установили FFmpeg на свой компьютер с Linux, обратитесь к следующему руководству.
- Как установить FFMpeg в Linux
Поворот видео с помощью FFmpeg из командной строки
В FFmpeg есть функция Транспонирование, которая используется для поворота видео. Используя эту функцию, мы можем легко вращать видео по часовой стрелке и против часовой стрелки, а также переворачивать их по вертикали и горизонтали.
Например, следующая команда повернёт данное видео на 90 градусов по часовой стрелке:
ffmpeg -i input.mp4 -vf "transpose=1" output.mp4
Или используйте эту команду:
ffmpeg -i input.mp4 -vf "transpose=clock" output.mp4
Здесь параметр transpose=1 указывает FFmpeg транспонировать данное видео на 90 градусов по часовой стрелке. Вот список доступных параметров для функции транспонирования.
- 0 — поворот на 90 градусов против часовой стрелки и переворот по вертикали. Это по умолчанию.
- 1 — поворот на 90 градусов по часовой стрелке.
- 2 — поворот на 90 градусов против часовой стрелки.
- 3 — поворот на 90 градусов по часовой стрелке и переворот по вертикали.
Чтобы повернуть видео на 180 градусов по часовой стрелке, вам нужно дважды указать параметр транспонирования, как показано ниже.
ffmpeg -i input.mp4 -vf "transpose=2,transpose=2" output.mp4
Приведенные выше команды перекодируют аудио- и видеочасти данного видеофайла. Если вы не хотите перекодировать видео и менять поворот только в метаданных, используйте вместо этого следующую команду:
ffmpeg -i input.mp4 -c copy -metadata:s:v:0 rotate=90 output.mp4
Более того, вы можете скопировать все глобальные метаданные (например, дату, сведения о камере) из входного файла в выходной файл, как показано ниже.
ffmpeg -i input.mp4 -map_metadata 0 -metadata:s:v rotate="90" -codec copy output.mp4
Обратите внимание, что это не работает в некоторых проигрывателях, которые не могут обрабатывать метаданные ротации. Я менял ориентацию видео только в метаданных и воспроизводил его в Smplayer. Но видео продолжало воспроизводиться в прежней ориентации. Но в медиаплеере Gnome это работало! Я не знаю, почему. Итак, если ориентация видео не сработала, возможно, вам придется перекодировать его, как показано в первой команде.
Рекомендуем прочитать:
- Как просмотреть метаданные изображения в Linux