Редактирование видео с помощью командной строки (FFmpeg для начинающих)

Содержание
  1. Редактирование видео с помощью командной строки: FFmpeg для начинающих (и не только)
  2. Зачем вообще командная строка? Или «мышка — это для слабаков»?
  3. Первый шаг: установка и знакомство с FFmpeg
  4. Базовые операции: отрезать, склеить, переформатировать
  5. Отрезка: «отсечь всё лишнее»
  6. Склейка: «сшить лоскутки в одно одеяло»
  7. Конвертация форматов: «из одного языка в другой»
  8. Изменение размера и разрешения: «подгоняем под экран»
  9. Продвинутые трюки для начинающих: звук, водяные знаки, субтитры
  10. Работа со звуком: «отделить зерна от плевел»
  11. Водяные знаки: «пометить территорию»
  12. Встраивание субтитров: «чтобы все поняли»
  13. «Подводные камни» и «лайфхаки» из личного опыта
  14. Железо и драйверы: «когда каждый FPS на счету»
  15. Пути и кириллица: «о, эти русские буквы!»
  16. Прогресс и логи: «кажется, зависло? Нет, просто FFmpeg молчит, как партизан»
  17. Хранение файлов: «исходники — это святое»
  18. Версии FFmpeg: «не гонитесь за последней версией, но и не сидите на древней»
  19. Кейсы из практики: как FFmpeg спасал меня
  20. Кейс 1: «Дачный архив»
  21. Кейс 2: «Контент для блога/канала»
  22. Кейс 3: «Системное администрирование: камеры наблюдения»
  23. Отказ от ответственности

Редактирование видео с помощью командной строки: FFmpeg для начинающих (и не только)

Видео. Оно повсюду. В 2025 году это уже не просто контент, это воздух, которым мы дышим, способ общения, способ сохранения памяти. Мы снимаем на телефоны, камеры, регистраторы. И почти всегда потом встает вопрос: а как это всё привести в божеский вид? Обрезать лишнее, склеить нужные куски, добавить музыку, ужать для Телеграма, чтобы не ждать загрузку вечность на дачном 4G? Большинство сразу потянутся к привычным видеоредакторам с красивыми кнопками и мышкой. Но что, если я скажу, что есть способ быстрее, мощнее и, что самое главное, позволяющий автоматизировать рутину? Добро пожаловать в мир FFmpeg – кувалды для работы с видео, которая, если научиться ею пользоваться, способна творить настоящую черную магию. Забудьте о мышке и красивых кнопочках – сегодня мы заглянем под капот.

Зачем вообще командная строка? Или «мышка — это для слабаков»?

Хороший вопрос, особенно для новичка. Сисадмин с 20-летним стажем, как я, давно знает ответ: автоматизация и контроль. Вот несколько причин, почему FFmpeg — это не просто прихоть гика, а реально полезный инструмент, особенно в наших реалиях:

  • Скорость и эффективность: Представьте, вам нужно обработать десяток видеороликов: обрезать начало и конец, уменьшить разрешение. В графическом редакторе вы будете кликать каждый раз. С FFmpeg вы пишете одну команду или простой скрипт, и он делает все за вас, пока вы пьете чай. Пакетная обработка — это наше всё.
  • Независимость от графического интерфейса: FFmpeg работает везде: на Windows, Linux, macOS, даже на Android (хотя там свои «танцы с бубном»). Ему не нужны гигабайты оперативки для отрисовки интерфейса. Он легкий, как перышко, но мощный, как бульдозер. Это особенно актуально, когда речь идет о старых ПК или серверах.
  • Полный контроль: Вы контролируете каждый пиксель, каждый бит, каждый параметр кодирования. В графических редакторах часто есть «пресеты», которые не дают вам нужной гибкости. Здесь же вы можете настроить всё до мельчайших деталей.
  • Импортозамещение в действии: В 2025 году, когда доступ к некоторым привычным коммерческим программам может быть ограничен, открытое ПО вроде FFmpeg становится настоящим спасением. Оно бесплатное, постоянно развивается и не зависит от подписок и лицензий.

Первый шаг: установка и знакомство с FFmpeg

Начнем с самого простого: как его получить? Для Windows лучший способ — это скачать сборку с официального сайта FFmpeg.org или, если вы любите консоль, использовать winget: winget install ffmpeg. Для Linux-пользователей всё еще проще: sudo apt install ffmpeg (для Debian/Ubuntu) или sudo dnf install ffmpeg (для Fedora/CentOS). После установки убедитесь, что путь к исполняемому файлу FFmpeg добавлен в переменную PATH вашей системы. Для Windows это частая проблема новичков: если вы скачали архив, распакуйте его, например, в C:ffmpeg, а затем добавьте путь к папке bin (например, C:ffmpegbin) в системную переменную PATH. Это как найти ключи от квартиры в темноте, но без этого никак.

Чтобы проверить, что всё в порядке, откройте командную строку (cmd в Windows, Terminal в Linux/macOS) и введите:

ffmpeg -version

Если вы увидите кучу текста с информацией о версии и сборке, значит, пульс есть! Поздравляю, вы сделали первый шаг в мир консольного видеомонтажа.

Базовые операции: отрезать, склеить, переформатировать

Это три кита, на которых держится 90% повседневного видеомонтажа.

Отрезка: «отсечь всё лишнее»

Самая частая операция, как отрезать колбасу. FFmpeg предлагает несколько способов. Самые простые — это использование флагов -ss (начало) и -to (конец) или -t (длительность).

Допустим, у нас есть видео input.mp4, и мы хотим вырезать кусок с 10-й секунды по 30-ю:

ffmpeg -ss 00:00:10 -to 00:00:30 -i input.mp4 -c copy output.mp4

Флаг -c copy (или -codec copy) означает, что FFmpeg не будет перекодировать видео и аудио, а просто скопирует их. Это очень быстро, но имеет один нюанс, о котором не все знают: FFmpeg может начать отрезку не совсем точно с указанной секунды, а с ближайшего ключевого кадра. Если вам нужна пиксельная точность, придется перекодировать (убрать -c copy), но это займет больше времени.

Если нужна длительность, а не конечная точка:

ffmpeg -ss 00:00:10 -i input.mp4 -t 00:00:20 -c copy output.mp4

Здесь мы начинаем с 10-й секунды и вырезаем 20 секунд длительности.

Склейка: «сшить лоскутки в одно одеяло»

Это чуть сложнее, но тоже вполне посильно. FFmpeg использует так называемый concat демуксер. Сначала вам нужно создать текстовый файл (например, mylist.txt) со списком видеофайлов, которые вы хотите склеить. Важный момент: пути к файлам должны быть либо относительными, либо полными, и, о горе, никаких русских букв в путях или именах файлов! FFmpeg их не любит, как кошка воду. Это мой личный «лайфхак», выстраданный годами: всегда используйте латиницу в путях и именах файлов, иначе «танцы с бубном» обеспечены.

Пример mylist.txt:

file 'part1.mp4'
file 'part2.mp4'
file 'part3.mp4'

Затем запускаем команду:

ffmpeg -f concat -safe 0 -i mylist.txt -c copy output.mp4

Флаг -safe 0 нужен, если пути к файлам содержат спецсимволы или находятся не в текущей директории. Если кодеки видеофайлов, которые вы склеиваете, разные (например, один H.264, другой VP9), то -c copy не сработает, и вам придется перекодировать их, указав целевой кодек, например -c:v libx264 -c:a aac. Иначе жди беды: видео может рассыпаться или звук пропадет.

Конвертация форматов: «из одного языка в другой»

Нужно перевести видео из MOV в MP4 для Телеграма, или из AVI в WebM для сайта? FFmpeg ваш лучший переводчик.

ffmpeg -i input.mov -c:v libx264 -c:a aac output.mp4

Здесь -c:v libx264 указывает видеокодек (H.264, самый распространенный), а -c:a aac — аудиокодек. Для контроля качества видео вместо битрейта (-b:v) я всегда использую Constant Rate Factor (CRF) с H.264. Это ваш лучший друг, если вы не хотите заморачиваться с битрейтом. Чем меньше значение CRF (от 0 до 51), тем выше качество и больше размер файла. Для большинства задач CRF 23-28 — золотая середина.

ffmpeg -i input.mp4 -c:v libx264 -crf 25 -c:a aac output.mp4

Изменение размера и разрешения: «подгоняем под экран»

Очень полезно для оптимизации видео под разные платформы (например, для VK или Telegram, где каждый мегабайт на счету). Используем видеофильтр scale.

Уменьшить видео до ширины 1280 пикселей, сохраняя пропорции:

ffmpeg -i input.mp4 -vf scale=1280:-1 output.mp4

-1 означает, что FFmpeg автоматически подберет высоту, чтобы сохранить соотношение сторон. Если нужно конкретное разрешение, например 640×480:

ffmpeg -i input.mp4 -vf scale=640:480 output.mp4

Продвинутые трюки для начинающих: звук, водяные знаки, субтитры

Работа со звуком: «отделить зерна от плевел»

FFmpeg позволяет легко манипулировать аудиодорожками. Например, извлечь звук из видео:

ffmpeg -i input.mp4 -vn output.mp3

Флаг -vn означает «no video» (без видео). Аналогично, -an означает «no audio» (без аудио).

Добавить новую аудиодорожку к видео:

ffmpeg -i video.mp4 -i audio.mp3 -c:v copy -c:a aac -map 0:v:0 -map 1:a:0 output.mp4

Здесь -map указывает, какие потоки откуда брать: 0:v:0 — это первый видеопоток из первого входного файла, а 1:a:0 — первый аудиопоток из второго входного файла.

Водяные знаки: «пометить территорию»

Хотите добавить свой логотип? Используйте фильтр overlay. Вам понадобится PNG-файл с прозрачностью.

ffmpeg -i input.mp4 -i logo.png -filter_complex "overlay=10:10" output.mp4

overlay=10:10 разместит логотип в 10 пикселях от левого и верхнего краев. Вы можете использовать более сложные выражения для позиционирования, например, overlay=W-w-10:H-h-10 для нижнего правого угла (W/H — ширина/высота видео, w/h — ширина/высота лого).

Встраивание субтитров: «чтобы все поняли»

Если у вас есть SRT-файл с субтитрами, вы можете «вжечь» их прямо в видео (то есть они станут частью видеокадров и не будут отключаемыми).

ffmpeg -i input.mp4 -vf "subtitles=subs.srt" output.mp4

Обратите внимание: для этого требуется, чтобы FFmpeg был собран с поддержкой libass (обычно это так).

«Подводные камни» и «лайфхаки» из личного опыта

Железо и драйверы: «когда каждый FPS на счету»

В 2025 году, когда железо стало дефицитом, а цены кусаются, важно выжимать максимум из того, что есть. FFmpeg умеет использовать аппаратное ускорение вашей видеокарты (GPU acceleration) для кодирования и декодирования. Это значительно ускоряет процесс. Для NVIDIA это NVENC, для AMD — AMF, для Intel — QSV, для Linux — VAAPI/VDPAU.

Например, для кодирования H.264 с NVENC:

ffmpeg -i input.mp4 -c:v h264_nvenc -preset slow -crf 25 -c:a aac output.mp4

На моей старенькой GTX 1060, которая прошла огонь и воду, NVENC даёт фору любому CPU. Но помните, не все кодеки это поддерживают, и иногда это приносит больше проблем, чем пользы, особенно на сборках с Авито: некорректно установленные драйверы или старые версии могут привести к ошибкам или нестабильной работе. Всегда проверяйте, поддерживается ли ваш кодек вашей картой и драйверами.

Пути и кириллица: «о, эти русские буквы!»

Я уже упоминал это, но повторюсь: FFmpeg, как и многие инструменты командной строки, не очень дружит с кириллицей в путях и именах файлов. Это постоянная боль. Если вы видите ошибку «No such file or directory», а файл точно есть, 90% вины — русские буквы или пробелы (хотя пробелы решаются кавычками). Мой совет: переименуйте файлы и папки в латиницу, или хотя бы помещайте их в корневой каталог диска для работы, а потом уже переносите куда надо.

Прогресс и логи: «кажется, зависло? Нет, просто FFmpeg молчит, как партизан»

По умолчанию FFmpeg выводит много информации в консоль, но не всегда очевидно, сколько осталось до конца. Если вам нужен более детальный лог или вы хотите записать вывод в файл:

ffmpeg -i input.mp4 output.mp4 > log.txt 2>&1

Это перенаправит весь вывод (stdout и stderr) в файл log.txt. Очень полезно для отладки, когда что-то пошло не так.

Хранение файлов: «исходники — это святое»

Всегда, слышите, всегда делайте копии исходных файлов перед тем, как начать их обрабатывать. FFmpeg — мощный инструмент, но он не спрашивает, хотите ли вы перезаписать файл. Ошибка в команде — и ваш единственный экземпляр семейного видео с дачи 2005 года может быть безвозвратно испорчен. Облака, внешние диски, или даже старый домашний сервер на Raspberry Pi/старом ПК — наше всё, особенно когда речь идет о ценных воспоминаниях.

Версии FFmpeg: «не гонитесь за последней версией, но и не сидите на древней»

FFmpeg постоянно развивается, добавляются новые кодеки, фильтры, исправляются ошибки. Не стоит сидеть на версии десятилетней давности, но и не нужно сразу же обновляться до последней сборки, если текущая устраивает и работает стабильно. Иногда новые версии могут принести несовместимости или баги. Золотая середина — обновляться раз в год или когда вам понадобится конкретная новая функция.

Кейсы из практики: как FFmpeg спасал меня

Кейс 1: «Дачный архив»

Моя бабушка, как и многие наши бабушки, обожает смотреть старые видеозаписи. В один прекрасный день она вытащила пыльную коробку с VHS-кассетами, оцифрованными когда-то на DVD, а потом переписанными в AVI на внешний HDD. Проблема: эти AVI были в 720×576 interlaced (чересстрочная развертка), да еще и с кучей бесполезных пауз и шумов. Задача: перевести всё в MP4, обрезать лишнее, склеить по хронологии, убрать чересстрочность, да еще и сжать, чтобы на флешку влезло.

Руками это делать — неделя работы. FFmpeg справился за пару дней (большую часть времени занимало само перекодирование). Я написал скрипт, который:

  1. Сканировал папку с AVI.
  2. Для каждого файла применял деинтерлейсинг (-vf yadif).
  3. Обрезал начало и конец, используя метки времени, которые я заранее выписывал.
  4. Перекодировал в MP4 (H.264, CRF 26).
  5. Затем склеивал нужные фрагменты в хронологическом порядке.

Когда бабушка получила флешку с аккуратно нарезанными и объединенными «фильмами» в современном формате, её счастью не было предела. А я сэкономил кучу времени и нервов.

Кейс 2: «Контент для блога/канала»

Один мой знакомый, начинающий блогер, столкнулся с проблемой: он снимает на телефон, видео весят по несколько гигабайт, а нужно быстро выкладывать в Telegram-канал или VK. Загрузка порой занимала по полчаса. Я подсказал ему простейший скрипт на FFmpeg:

ffmpeg -i input.mp4 -c:v libx264 -crf 28 -preset medium -vf scale=1280:-1 -c:a aac -b:a 128k output_telegram.mp4

Эта команда уменьшает разрешение до 1280px по ширине, сжимает видео с CRF 28 (хорошее качество при малом весе), и аудио до 128kbps. В итоге видео в 100-200 МБ превращаются в 20-30 МБ без видимой потери качества для просмотра на телефоне. Загрузка стала занимать минуты. Профит!

Кейс 3: «Системное администрирование: камеры наблюдения»

На работе, на одном из серверов, хранились записи с камер видеонаблюдения. Место на диске — вечная проблема. Записи были в каком-то экзотическом формате, который занимал непомерно много. Нужно было их периодически перекодировать в более компактный H.265 (HEVC), чтобы освободить место, но при этом сохранить приемлемое качество.

Я настроил крон-задачу (для Linux-сервера) с использованием FFmpeg, которая раз в неделю сканировала папку с записями, находила старые файлы, перекодировала их с помощью libx265 с умеренным CRF и удаляла исходники. Это позволило значительно увеличить глубину архива без покупки новых дисков. FFmpeg — это не только для «креатива», но и для суровых админских будней.

FFmpeg — это не просто программа, это философия. Философия контроля, эффективности и независимости. Освоив её азы, вы откроете для себя совершенно новый уровень работы с видео. Да, поначалу будет непривычно, возможно, придется «набить шишек» на ошибках. Но поверьте, оно того стоит. В мире, где видео становится всё более важным, умение им управлять на таком глубоком уровне — это ценный навык.

Отказ от ответственности

Все примеры команд и советы, приведенные в этой статье, предназначены исключительно для образовательных целей. FFmpeg — мощный инструмент, и неправильное его использование может привести к потере данных или нежелательным результатам. Всегда делайте резервные копии важных файлов перед обработкой. Автор статьи не несет ответственности за любые прямые или косвенные убытки, возникшие в результате использования информации из данной статьи. Помните о законодательстве об авторском праве: используйте FFmpeg только для работы с контентом, на который у вас есть соответствующие права.

Радик Камаев

Сисадмин с 20-летним опытом. Windows, Unix, Android.

Оцените автора
Познавательный портал