- Редактирование видео с помощью командной строки: FFmpeg для начинающих (и не только)
- Зачем вообще командная строка? Или «мышка — это для слабаков»?
- Первый шаг: установка и знакомство с FFmpeg
- Базовые операции: отрезать, склеить, переформатировать
- Отрезка: «отсечь всё лишнее»
- Склейка: «сшить лоскутки в одно одеяло»
- Конвертация форматов: «из одного языка в другой»
- Изменение размера и разрешения: «подгоняем под экран»
- Продвинутые трюки для начинающих: звук, водяные знаки, субтитры
- Работа со звуком: «отделить зерна от плевел»
- Водяные знаки: «пометить территорию»
- Встраивание субтитров: «чтобы все поняли»
- «Подводные камни» и «лайфхаки» из личного опыта
- Железо и драйверы: «когда каждый FPS на счету»
- Пути и кириллица: «о, эти русские буквы!»
- Прогресс и логи: «кажется, зависло? Нет, просто FFmpeg молчит, как партизан»
- Хранение файлов: «исходники — это святое»
- Версии FFmpeg: «не гонитесь за последней версией, но и не сидите на древней»
- Кейсы из практики: как FFmpeg спасал меня
- Кейс 1: «Дачный архив»
- Кейс 2: «Контент для блога/канала»
- Кейс 3: «Системное администрирование: камеры наблюдения»
- Отказ от ответственности
Редактирование видео с помощью командной строки: 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 справился за пару дней (большую часть времени занимало само перекодирование). Я написал скрипт, который:
- Сканировал папку с AVI.
- Для каждого файла применял деинтерлейсинг (
-vf yadif
). - Обрезал начало и конец, используя метки времени, которые я заранее выписывал.
- Перекодировал в MP4 (H.264, CRF 26).
- Затем склеивал нужные фрагменты в хронологическом порядке.
Когда бабушка получила флешку с аккуратно нарезанными и объединенными «фильмами» в современном формате, её счастью не было предела. А я сэкономил кучу времени и нервов.
Кейс 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 только для работы с контентом, на который у вас есть соответствующие права.