FFmpeg вміє майже все, що можна зробити з відео й аудіо, але кожного разу гуглити потрібний ключ дуже втомлює. Тому ось шпаргалка: найкорисніші команди на всі випадки, які я сам регулярно використовую. Тримай її під рукою або додай у закладки: заощадить купу часу. Основи (що таке FFmpeg, як його встановити, перші команди для конвертації) я розписував у статті FFmpeg: як конвертувати відео й аудіо через консоль, тут же зібрано все решту.
Загальна схема команди
ffmpeg [вхідні параметри] -i вхід [вихідні параметри] вихід
Усе, що стоїть перед -i, стосується вхідного файлу, усе після – вихідного. Тип результату FFmpeg визначає за розширенням вихідного файлу. Якщо вихідний файл уже існує, FFmpeg спитає, чи перезаписати; щоб не питав, додай -y.
Дізнатися все про файл
ffprobe -hide_banner відео.mp4
Покаже тривалість, кодеки, роздільну здатність, частоту кадрів, бітрейт і всі доріжки (відео, аудіо, субтитри). Перша команда, яку варто виконати, коли не розумієш, що за файл перед тобою.
Конвертація без втрати якості: просто змінити контейнер
ffmpeg -i відео.mkv -c copy відео.mp4
Ключ -c copy не перекодовує, а лише перекладає вміст в інший контейнер. Робиться за секунди й без втрати якості. Мінус: не всі кодеки підтримуються в усіх контейнерах, і тоді FFmpeg скаже про це помилкою. Тоді доведеться перекодовувати.
Стиснути відео
ffmpeg -i відео.mp4 -c:v libx264 -crf 23 -preset medium -c:a aac -b:a 128k стиснуте.mp4
-crf– якість: чим менше число, тим краща картинка і більший файл. Розумний діапазон – приблизно від 18 (дуже добре) до 28 (помітне стиснення);-preset– швидкість кодування: відultrafastдоveryslow. Повільніший пресет дає менший файл за тієї самої якості.
Обрізати відео без перекодування
ffmpeg -ss 00:01:30 -i відео.mp4 -t 00:00:40 -c copy фрагмент.mp4
Почати з 1:30 і взяти 40 секунд. Оскільки це копіювання без перекодування, різ відбувається по найближчому ключовому кадру, тому початок може трохи «поплисти» на секунду-дві. Для точного різу прибери -c copy, тоді відео перекодується й різатиметься покадрово.
Склеїти кілька відео
Створи текстовий файл список.txt:
file 'частина1.mp4'
file 'частина2.mp4'
file 'частина3.mp4'
І запусти:
ffmpeg -f concat -safe 0 -i список.txt -c copy разом.mp4
Працює, якщо в усіх файлів однакові кодеки, роздільна здатність і частота кадрів. Якщо ж вони різні, прибери -c copy, і FFmpeg перекодує все під єдині параметри.
Витягти звук із відео
ffmpeg -i відео.mp4 -vn -c:a copy звук.m4a
ffmpeg -i відео.mp4 -vn -c:a libmp3lame -q:a 2 звук.mp3
Перша команда копіює звукову доріжку без втрат (працює, якщо в відео звук AAC), друга робить MP3 доброї якості. Ключ -vn означає «без відео».
Прибрати звук із відео
ffmpeg -i відео.mp4 -an -c:v copy без_звуку.mp4
Накласти музику на відео чи замінити звук
ffmpeg -i відео.mp4 -i музика.mp3 -map 0:v -map 1:a -c:v copy -shortest результат.mp4
Бере картинку з першого файлу, а звук із другого. -shortest обрізає результат за найкоротшою доріжкою.
Зробити відео з картинки й аудіо
Зручно, коли треба завантажити пісню на YouTube, не маючи відео:
ffmpeg -loop 1 -i обкладинка.jpg -i трек.mp3 -c:v libx264 -tune stillimage -c:a aac -b:a 192k -pix_fmt yuv420p -shortest відео.mp4
Змінити роздільну здатність
ffmpeg -i відео.mp4 -vf scale=1280:-2 менше.mp4
Ширина 1280, висота розраховується автоматично з урахуванням пропорцій. Мінус дві замість мінус одиниці гарантує парну висоту, яку вимагають деякі кодеки.
Повернути чи обрізати кадр
ffmpeg -i відео.mp4 -vf "transpose=1" повернуте.mp4
ffmpeg -i відео.mp4 -vf "crop=1080:1080" квадрат.mp4
Перша команда повертає відео на 90° за годинниковою стрілкою (transpose=2 – проти), друга вирізає із центру квадрат 1080×1080.
Прискорити чи сповільнити
ffmpeg -i відео.mp4 -filter:v "setpts=0.5*PTS" -an швидше.mp4
ffmpeg -i відео.mp4 -filter:v "setpts=2.0*PTS" -an повільніше.mp4
Перша команда вдвічі швидша, друга вдвічі повільніша. Тут звук прибрано, бо він потребує окремого фільтра atempo. Це зручно для таймлапсів і конспективних відео.
Зробити GIF із відео
ffmpeg -i відео.mp4 -vf "fps=12,scale=480:-1:flags=lanczos,split[s0][s1];[s0]palettegen[p];[s1][p]paletteuse" анімація.gif
Фільтр palettegen створює оптимальну палітру кольорів саме під це відео, тому GIF виходить помітно кращої якості, ніж за простого перетворення. Щоб вирізати фрагмент, додай перед -i ключі -ss і -t, як у команді обрізання вище.
Кадри з відео
ffmpeg -ss 00:00:10 -i відео.mp4 -frames:v 1 кадр.jpg
ffmpeg -i відео.mp4 -vf fps=1 кадр_%04d.jpg
Перша зберігає один кадр на десятій секунді, друга витягує по кадру на секунду.
Додати водяний знак
ffmpeg -i відео.mp4 -i лого.png -filter_complex "overlay=W-w-20:H-h-20" з_лого.mp4
Логотип потрапить у правий нижній кут із відступом у 20 пікселів. Для лівого верхнього кута запиши overlay=20:20.
Субтитри
ffmpeg -i відео.mp4 -vf subtitles=субтитри.srt вшиті.mp4
ffmpeg -i відео.mp4 -i субтитри.srt -c copy -c:s mov_text окремі.mp4
Перша команда вшиває субтитри в картинку назавжди, друга додає їх окремою доріжкою, яку глядач може вимкнути.
Вирівняти гучність
ffmpeg -i відео.mp4 -af loudnorm -c:v copy нормалізовано.mp4
Фільтр loudnorm вирівнює сприйману гучність за стандартом, який використовують стрімінгові сервіси. Корисно, якщо відео з різних джерел звучать по-різному.
Обробити багато файлів одразу
У Linux і macOS це зручно робити циклом у терміналі. Наприклад, перетворити всі MKV у теці на MP4:
for f in *.mkv; do
ffmpeg -i "$f" -c copy "${f%.mkv}.mp4"
done
Зверни увагу на лапки навколо $f: без них назви з пробілами розвалюються. Про змінні, лапки й цикли докладно я розписав у статті змінні в Bash. У командному рядку Windows цикл виглядає так:
for %f in (*.mkv) do ffmpeg -i "%f" -c copy "%~nf.mp4"
Швидше кодування за допомогою відеокарти
Якщо відеокарта вміє апаратне кодування, замість libx264 можна вказати апаратний кодек: h264_nvenc для NVIDIA, h264_qsv для вбудованої графіки Intel чи h264_vaapi у Linux. Кодування стає в рази швидшим, але за тією самою якістю файл виходить трохи більшим, ніж у процесорного кодування.
Типові помилки
- «Unknown encoder». Твоя збірка FFmpeg не має потрібного кодека. Встанови повнішу збірку.
- Пробіли в назвах файлів. Бери імена файлів у лапки:
-i "мій файл.mp4". - Файл уже існує. FFmpeg чекає відповіді: введи
yабо додай ключ-y. - Звук не відтворюється в MP4. Не всі аудіокодеки підтримуються в цьому контейнері. Перекодуй звук:
-c:a aac.
Що далі
Якщо не хочеш запам'ятовувати команди, спробуй програми-оболонки: я розповідав про найкращий відеоконвертер для Linux та безкоштовний відеоконвертер для Windows. А записати екран і відразу обробити відео допоможуть найкращі програми для запису екрану в Linux.
Більше про це – за позначками FFmpeg та Конвертери файлів.
Яка команда FFmpeg виручає тебе найчастіше? Пиши в коментарях 🙂


Прокоментувати
На сайті відображається лише твоє ім'я та коментар. Електронна пошта зберігається виключно для зв'язку з тобою за потреби та в жодному разі не передається стороннім особам.