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


19

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

Як я можу це зробити?


Я виявив, що ffmpeg зміг це зробити. Дивіться, наприклад, форуми Ubuntu: обертати відео на 90 градусів
Саймон

Відповіді:


9

використовуючи VLC , ви можете обертати відео, перейшовши до Інструменти >> Налаштування ...

І виберіть "Усі" для налаштувань шоу. Потім перейдіть до: Відео >> Фільтри >> Поворот

Після встановлення потрібного ступеня ви можете обертатись, перейшовши до Інструменти> Ефекти та фільтри> Відеоефекти> Геометрія ...

alt текст

я тестував mp4, але я вважаю, що VLC може підтримувати і 3gp. сподіваюся, що це допомагає. :)


13
я можу переглянути відео з поворотом, але як зробити так, щоб зміни зберігалися
Justinhj


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
  • transpose=1буде обертати відео на 90 градусів за годинниковою стрілкою; для обертання проти годинникової стрілки використовуйте transpose=2. Щоб отримати додаткові відомості, перегляньте документацію транспонування .

  • -metadata:s:v rotate=""зніме будь-які існуючі метадані обертання відеопотоку; інакше ffmpegбуде скопійовано його, що може призвести до того, що ваш програвач застосує додаткові небажані повороти.

  • Інформацію про налаштування кодування відео тут див. Цей посібник з кодування H.264 та посібник з кодування AAC, якщо ви хочете перекодувати звук замість потокового копіювання .


Це краще відповідає на питання, оскільки пояснює, як це зробити з командного рядка за допомогою ffmpeg, як зазначено в оригінальному запитанні. Я вважаю, що цю відповідь слід позначити правильною. Станом на травень 2017 року на Fedora 25, це все ще працює, хоч повідомлення про аномацію кодека MP4.
Джастін В. Флорі

4

Avidemux повинен бути в змозі це зробити.

Зробіть Video->Filters->Rotate(x degrees)->CloseтодіFile->Save->Save Video


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 - це підтримуваний вхідний відеофайл, а вихідний файл - бажаний вихідний файл.

Для обертання проти годинникової стрілки замініть годинник на годинник

Ось уривок із документації:

‘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 завжди в розвитку, тому з часом все змінюється. Не дивно, що існують простіші методи, ніж деякі старіші відповіді. Ура!
Старійшина
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.