Поворот видеофайла на 90 градусов с помощью Ubuntu

19

Я хочу использовать Ubuntu и желательно стандартные пакеты, такие как ffmpeg, чтобы повернуть видеофайл .3gp на 90 градусов в любом направлении. Предпочтительно командная строка или скрипт Python.

Как я могу это сделать?

justinhj
источник

Ответы:

9

Используя VLC , вы можете повернуть видео, выбрав Инструменты >> Настройки ...

И выберите «Все» для отображения настроек. Затем перейдите к: Видео >> Фильтры >> Повернуть

После установки желаемой степени вы можете вращаться, выбрав Инструменты> Эффекты и фильтры> Видеоэффекты> Геометрия ...

альтернативный текст

я проверил mp4, но я верю, что VLC также может поддерживать 3gp. надеюсь это поможет. :)

Е Лин Аунг
источник
13
Я могу смотреть видео повернутым, но как сохранить изменения
Джастин
vlchelp.com/...
mbernasocchi
17

Из командной строки с помощью ffmpeg:

ffmpeg -i input.3gp -filter:v transpose=1 \
-c:v libx264 -preset veryfast -crf 22 \
-c:a copy \
-metadata:s:v rotate="" \
output.3gp
evilsoup
источник
Это лучше отвечает на вопрос, поскольку объясняет, как это сделать из командной строки с помощью ffmpeg, как указано в исходном вопросе. Я думаю, что этот ответ должен быть помечен как правильный. По состоянию на май 2017 года в Fedora 25 это все еще работает, хотя и не рекомендуется использовать кодек MP4.
Джастин В. Флори
4

Avidemux должен быть в состоянии сделать это.

Есть Video->Filters->Rotate(x degrees)->CloseтоFile->Save->Save Video

Nifle
источник
2

Я решил похожую проблему - у меня был .MOV, который был перевернут вверх ногами (то есть повернут на 180 градусов), который я хотел установить правильно.

В моей системе Ubuntu 14.04 я использовал avconvте же параметры командной строки, которые указаны ffmpegв ответе evilsoup . По-видимому, он не поддерживает transposeопцию вращения на 180 градусов, поэтому я сделал 90-градусный поворот по часовой стрелке (т.е. transpose=1) дважды.

Когда я попробовал минимальные варианты, я получил сообщение о том, что:

encoder 'aac' is experimental and might produce bad results.

Add '-strict experimental' if you want to use it.

и выходной файл был нулевой длины, поэтому я добавил -strict experimental.

Командные строки, которые работали были:

avconv -i IMG_orignl.MOV -filter:v 'transpose=1' -strict experimental IMG_interm.MOV
avconv -i IMG_interm.MOV -filter:v 'transpose=1' -strict experimental IMG_result.MOV

Результат был удовлетворительным, с необъяснимыми побочными эффектами:

  1. Промежуточный файл был меньше исходного на ~ 14%.
  2. Файл результатов был меньше промежуточного на ~ 18% и меньше оригинального почти на 30%.
  3. Файл результатов показывает миниатюру, в то время как оригинал и промежуточный файл показывают просто общий значок.

Не то чтобы я жалуюсь: это желательно; Я просто не понимаю, почему они появились ...

Ник Петерсон
источник
Добро пожаловать в Супер пользователя. (1) Хотя некоторая справочная информация в вашем ответе может оказаться полезной, лучше всего сосредоточиться на вашем решении проблемы. Я отредактировал ваш ответ для иллюстрации; не стесняйтесь редактировать его дальше, если вы считаете, что я слишком сильно изменился. (2) порядок отображения ответов может отличаться; лучше явно указать другой ответ (ы), чем сказать «выше». (2½) Я надеюсь, что вы представили свои avconvкомандные строки в полном объеме, а не только отличия от ffmpegкоманды. Ваш ответ должен быть самодостаточным; другой ответ может уйти. (3) Удачи!
G-Man говорит: «Восстановите Монику»
Кроме того, я предполагаю, что когда вы говорите «результат был удовлетворительным», вы имеете в виду, что ваш «файл результатов» выглядел так же хорошо, как и исходный файл. Вы можете захотеть ( отредактировать ваше сообщение) сказать об этом явно. (Такая информация, то есть, потеряли ли вы качество видео, видимое глазу, важна для вашего ответа и не должна быть скрыта в комментарии.) Кроме того, я уверен, что вы могли бы опустить цитаты и сказать справедливо -filter:v transpose=1 ….
G-Man говорит: «Восстановите Монику»
2

Со времени первоначального ответа на этот вопрос произошли некоторые изменения в libav. В попытке сохранить эту актуальность и полезность я предоставлю следующее:

Это можно сделать с помощью последних версий ffmpegи avconvс помощью транспонированного видеофильтра.

avconv -i inputfile -vf transpose=clock outputfile

для вращения по часовой стрелке.

в ffmpeg синтаксис такой же.

ffmpeg -i inputfile -vf transpose=clock outputfile

где inputfile - ваш поддерживаемый входной видеофайл, а outputfile - желаемый выходной файл.

Для вращения против часовой стрелки замените часы на часы

Вот выдержка из документации:

‘cclock_flip’

    Rotate by 90 degrees counterclockwise and vertically flip. (default)
‘clock’

    Rotate by 90 degrees clockwise.
‘cclock’

    Rotate by 90 degrees counterclockwise.
‘clock_flip’

    Rotate by 90 degrees clockwise and vertically flip. 

Источники:

https://libav.org/avconv.html#transpose

https://ffmpeg.org/ffmpeg-filters.html#transpose-1

Тестирование на Ubuntu 14.04.5 LTS, Ubuntu 16.04, Ubuntu 18.04

Старейшина Гик
источник
1
Спасибо за минимальные параметры. ffmpegработал для меня (не пытался avconv)
Амил Вадувавара
Отлично! да много постов про ffmpefвключает в себя много лишних аргументов, спасибо!
Мариано Руис
@MarianoRuiz Я рад, что это помогло тебе. ffmpeg всегда в разработке, поэтому со временем все меняется. Не удивительно, что существуют более простые методы, чем некоторые из более старых ответов. Ура!
Старейшина Гик