Як змінити розмір відео, щоб зменшити його за допомогою FFmpeg


101

Чи можна змінити розмір моїх відео, щоб зменшити їх за допомогою FFmpeg?

У мене оригінальні розміри відео 1024x576, тепер я хочу змінити розмір відео до 720x480, щоб відповідати вимозі.

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


ffmpegможе бути застарілим, дивіться тут і тут
горіх про natty

13
@nuttyaboutnatty "Знехрещені" повідомлення, застосовані лише до старих, мертвих, фальшивих " ffmpeg" з вилки Лібава, а не ffmpegвід FFmpeg, які повернулися в 15.04.
llogan

Відповіді:


163

Найбільш базовий приклад:

ffmpeg -i input.avi -s 720x480 -c:a copy output.mkv

Використання в scaleфільтр забезпечить більшу гнучкість:

ffmpeg -i input.avi -filter:v scale=720:-1 -c:a copy output.mkv

Повідомлення -1ffmpeg автоматично вибирає правильну висоту по відношенню до передбаченої ширини для збереження співвідношення сторін. -1також можна використовувати для ширини, якщо ви надаєте задану висоту.


Один недолік при використанні шкали libx264є те , що цей кодер вимагає навіть значення і масштабу може автоматично вибирати непарне значення , що призводить до помилки: width or height not divisible by 2. Ви можете сказати масштабу, щоб вибрати рівне значення для заданої висоти (720 у цьому прикладі):

scale="trunc(oh*a/2)*2:720"

... або заданої ширини (1280 у цьому прикладі):

scale="1280:trunc(ow/a/2)*2"

Зауважте, що ваша збірка ffmpeg може скаржитися на невпізнання -cабо -filterпараметри. Він також може не підтримувати scale. У такому випадку ви повинні використовувати новіший ffmpeg, який ви можете завантажити як статичну збірку, або скласти самостійно .


1
Я спробував ffmpeg -i output.mkv -filter:v scale=720:-1 -acodec copy -threads 12 output_shrink.mkv(у версії ffmpeg 0.8.6-6: 0.8.6-0ubuntu0.12.10.1), але отримав помилкуUnrecognized option 'filter:v'
doug65536

6
Після перекопування сторінки man для ffmpeg кілька разів я виявив, що замість цього -filter:v, схоже, параметр було змінено на -vf.
doug65536

2
@ doug65536 -filter:vі -vfвони обидва. Версія Ubuntu, яку ви використовували, зламана та застаріла - це насправді не FFmpeg ffmpeg, а двійковий файл, що постачається Libav (вилка FFmpeg) під тим же найменуванням.
slhck

1
@MightyPork, ймовірно, ваша збірка ffmpeg застаріла - які проблеми трапляються ?. У будь-якому випадку, це дійсно допомогло мені (з ffmpeg version 2.4.10) зменшити розмір деяких масових відео, щоб звільнити трохи місця - дякую!
Вільф

4
'-c' є коротким для -codec, ': a' вказує аудіопотік (и), 'copy' - вказує кодек копії, який копіює потоки (у цьому випадку аудіо) без повторного кодування. В основному аудіо потоки будуть проходити через. Це часто, коли ви маніпулюєте лише потоком відео.
jimhark

14

Я використовую наступні команди, щоб зробити масштаб для відео та зображень. Для фіксованої ширини та висоти -

ffmpeg -i input.avi -vf scale="720:480" output.avi

і якщо ви хочете зберегти співвідношення сторін, просто задайте висоту як -1, і воно автоматично змінить розмір на основі ширини -

ffmpeg -i input.avi -vf scale="720:-1" output.avi

Якщо ви хочете масштабувати на основі розміру введення Напр. скажемо, зменшити ширину / висоту за півроку,

ffmpeg -i input.avi -vf scale="iw/1:ih/2" output.avi

ПРИМІТКА :

iw : input width
ih : input height

Статичну збірку можна завантажити з - https://johnvansickle.com/ffmpeg/

Документація: https://ffmpeg.org/ffmpeg.html#filter_005foption


Не працює. Застряг у handler_name: Sound Handle
Rushi M Thakker

Я отримав жахливу якість відео з цією командою. Набагато краще, якщо я буду створювати output.mp4, а не avi. Тож розширення має значення.
Секрет
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.