Поиск по сайту:

Как вращать видео с помощью 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

Статьи по данной тематике