FFmpeg на Linux: установка и основные операции

Введение: FFmpeg — свободная утилита для записи, конвертации и потоковой передачи мультимедиа. Кодек — алгоритм сжатия; контейнер — формат файла.
Установка FFmpeg на Linux
FFmpeg присутствует в репозиториях большинства дистрибутивов. При желании вы можете собрать его из исходников, чтобы включить дополнительные кодеки или оптимизации.
Примеры установки по дистрибутивам:
# Debian/Ubuntu
sudo apt install ffmpeg
# Fedora (rpmfusion нужен для ffmpeg)
sudo dnf install https://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm
sudo dnf -y install ffmpeg
# RHEL/CentOS (репозитории или сборка из исходников могут потребоваться)
yum install ffmpeg ffmpeg-devel
# Arch Linux
sudo pacman -S ffmpegПроверьте установку командой:
ffmpeg -versionВажно: некоторые дистрибутивы не включают проприетарные кодеки по умолчанию (например H.264/H.265). Для таких кодеков может понадобиться подключить внешние репозитории или собрать кодек вручную.
Получение информации о видео
Команда “-i” показывает метаданные, потоки и кодеки входного файла. Параметр -hide_banner скрывает служебную строку ffmpeg.
ffmpeg -i example-video.mp4 -hide_bannerЧто можно получить: типы потоков (видео/аудио/субтитры), кодеки, разрешение, частоты дискретизации, длительность и метаданные.
Базовые операции: конвертация форматов
FFmpeg удобно использовать как “конвертер“ в одну строку.
MOV → MP4
ffmpeg -i input-mov-video.mov output-video.mp4Если кодеки совместимы, можно копировать поток без перекодирования:
ffmpeg -i input.mov -c copy output.mp4WAV → MP3
ffmpeg -i example-wav.wav -vn -ar 48000 -ac 2 -b:a 256k output.mp3Объяснение параметров:
-vn— отключить видеопотоки (удалить изображения)-ar— частота дискретизации (например, 44100 или 48000)-ac— количество аудиоканалов (1 = моно, 2 = стерео)-b:a— битрейт аудио (указывайте сk, например 256k)
Работа со звуком
Извлечь аудио из видео:
ffmpeg -i example-video.mp4 -vn output.mp3Убрать звук из видео:
ffmpeg -i example-video.mp4 -an output-mute.mp4Важно: -an удаляет все аудиопотоки; -vn исключает видео.
Обрезка и кадрирование
Ключевые параметры:
-ss— время начала (можно до-iдля быстрого seek)-to— время окончания (или-tдлительность)-c— выбор кодека (или-c copyдля безперекодирования)-filter:v/-vf— видеофильтры
Пример обрезки по времени:
ffmpeg -i example-video.mp4 -ss 00:02:25 -to 00:03:50 -c copy output-trim.mp4Кадрирование (crop):
ffmpeg -i example-video.mp4 -filter:v "crop=w:h:x:y" output-crop.mp4Пояснение: w:h — ширина/высота области; x:y — смещение от левого верхнего угла.
Масштабирование, объединение и поворот
Изменить размер (scale):
ffmpeg -i example-video.mp4 -vf scale=1920:1080 output-scale.mp4Склейка нескольких файлов (если кодеки и форматы совпадают): создайте текстовый список my-video-list.txt со строками file 'part1.mp4' и т.д., затем:
ffmpeg -f concat -safe 0 -i my-video-list.txt -c copy sum-output.mp4Поворот (transpose):
ffmpeg -i example-video.mp4 -vf "transpose=2" output-rotate.mp4Значения transpose:
transpose=0— поворот + отражение по вертикали (по умолчанию)transpose=1— поворот 90° по часовой стрелкеtranspose=2— поворот 90° против часовой стрелкиtranspose=3— отражение по вертикали
Для поворота на 180° примените два раза:
ffmpeg -i example-video.mp4 -vf "transpose=2,transpose=2" output-rotate-180.mp4FPS и GOP
- FPS — кадров в секунду. Меняем параметром
-vf fps=. - GOP (Group Of Pictures) — расстояние между ключевыми кадрами; управляется параметром
-g.
Примеры:
ffmpeg -i example-video.mp4 -vf "fps=60" output-fps.mp4
ffmpeg -i example-video.mp4 -g 200 output-gop.mp4Важно: слишком частые ключевые кадры ухудшают эффективность кодирования у некоторых кодеков.
GIF и извлечение кадров
Конвертация в GIF:
ffmpeg -i example-video.mp4 output-gif.gifКастомный GIF (начало, длительность, FPS и масштаб):
ffmpeg -ss 00:01:15 -i example-video.mp4 -to 10 -r 10 -vf scale=250:-1 output-gif.gifИзвлечь кадры (1 кадр в секунду):
ffmpeg -i example-video.mp4 -r 1 image-%02d.jpegМожно вывести в PNG, BMP и др.
Полезная шпаргалка (Cheat sheet)
| Задача | Пример команды | Комментарий |
|---|---|---|
| Получить инфо | ffmpeg -i file.mp4 | Просмотр потоков и кодеков |
| Конвертировать видео | ffmpeg -i in.mov -c:v libx264 -c:a aac out.mp4 | Явный выбор кодеков |
| Копирование без перекодировки | -c copy | Очень быстро, без потерь |
| Извлечь аудио | -i in.mp4 -vn out.mp3 | Удаляет видео |
| Убрать звук | -i in.mp4 -an out.mp4 | Отключает аудиопотоки |
| Обрезать по времени | -ss 00:01:00 -t 30 | Начало и длительность |
| Кадрирование | -vf "crop=640:360:0:0" | x:y — позиция |
| Масштаб | -vf "scale=1280:-1" | -1 сохраняет аспект |
| Объединить файлы | -f concat -i list.txt -c copy | Файлы должны быть однотипны |
Рекомендации по выбору кодека
- Для веб: H.264 (libx264) + AAC — широкая совместимость.
- Для качества/архива: H.265/HEVC (libx265) — лучше сжатие, но сложнее лицензирование.
- Для открытых форматов: VP9/AV1 + Opus — хороши для WebM и современных браузеров.
Важно учитывать лицензионные ограничения и поддержку на целевых платформах.
Когда FFmpeg не подойдёт (ограничения и контрпримеры)
- Если нужен GUI-интерфейс с визуальной таймлайной для сложного монтажа (например, многослойный монтаж), подойдут Kdenlive, DaVinci Resolve или Adobe Premiere.
- Для профессионального цветокорректирования и VFX FFmpeg слишком низкоуровневый.
- При работе с DRM-защищённым контентом FFmpeg не обойдет защиту легально.
Альтернативные подходы
- GUI-редакторы (Kdenlive, Shotcut) для интерактивной работы.
- GStreamer для встраивания в приложения и конвейеров реального времени.
- HandBrake для удобной пакетной конвертации с пресетами.
Модель принятия решения: стоит ли использовать FFmpeg?
- Нужен ли скрипт/автоматизация? → Да: FFmpeg.
- Нужен ли таймлайн и визуальный контроль? → Да: GUI-редактор.
- Требуется высокая совместимость кодека? → Проверьте целевые плейбэки и лицензии.
flowchart TD
A[Есть автоматизация/скрипты?] -->|Да| B[Использовать FFmpeg]
A -->|Нет| C[Нужен визуальный интерфейс?]
C -->|Да| D[Использовать GUI-редактор]
C -->|Нет| B
B --> E{Требуется H.264/H.265}
E -->|Да| F[Проверить лицензии и поддержку]
E -->|Нет| G[Использовать VP9/AV1]Роли: чек-листы для быстрого старта
Контент-мейкер:
- Установить ffmpeg.
- Проверить кодеки:
ffmpeg -codecs. - Конвертировать для веб:
ffmpeg -i in.mov -c:v libx264 -preset fast -crf 23 -c:a aac out.mp4.
Разработчик/CI:
- Добавить проверку версии в CI:
ffmpeg -version. - Использовать
-c copyдля быстрых тестов. - Брать лог с
-hide_banner -v errorдля строгих пайплайнов.
- Добавить проверку версии в CI:
Системный администратор:
- Убедиться в поддержке аппаратного ускорения (VAAPI, NVENC).
- Ограничить права на входные/выходные каталоги.
- Планировать обновления и совместимость библиотек.
Мини-методология: безопасный рабочий процесс
- Создайте копию исходника.
- Получите метаданные:
ffmpeg -i src. - Протестируйте один короткий фрагмент с желаемыми параметрами.
- Примените к полному файлу или в пакетном режиме.
- Проверяйте результаты на целевых устройствах.
Тест-кейсы и критерии приёмки
Критерии приёмки для автоматической конвертации в CI:
- Выходной файл проигрывается в целевом плеере.
- Разрешение и FPS совпадают с параметрами задачи.
- Отсутствие заметных артефактов при визуальной проверке.
- Аудио синхронизировано (нет drift).
Тест-кейсы:
- Конвертация 10-секундного видео H.264→VP9.
- Извлечение аудио и последующая склейка в контейнер.
- Извлечение кадров и сравнение контрольной суммы.
Совместимость и аппаратное ускорение
FFmpeg поддерживает аппаратное кодирование (NVENC, VAAPI, QSV). Примеры:
# NVENC (NVIDIA)
ffmpeg -i in.mp4 -c:v h264_nvenc -preset fast out.mp4
# VAAPI (Intel/AMD)
ffmpeg -vaapi_device /dev/dri/renderD128 -i in.mp4 -c:v h264_vaapi out.mp4Проверьте драйверы и права доступа на устройстве. Аппаратное ускорение ускоряет кодирование, но может давать другие профили и артефакты.
Безопасность и конфиденциальность
- Не запускайте ffmpeg на неподтверждённых файлах в окружении с критическими правами: возможны уязвимости при обработке специально сформированных контейнеров.
- Для пользовательских загрузок ограничивайте время и ресурсы процесса (cgroups, системные таймауты).
- Если обрабатываете персональные данные, соблюдайте локальные законы о конфиденциальности и хранении данных.
Практические советы и хитрости
- Для быстрого обрезания лучше указывать
-ssдо-iи использовать-c copyгде возможно. - Для сохранения соотношения сторон используйте
scale=1280:-1. - Для уменьшения размера используйте
-crf(для libx264: 18—28, где 23 по умолчанию). Меньше — лучше качество и больше размер. - Логирование:
-loglevel errorдля тихой работы,-progress pipe:1для потоковой информации в скриптах.
Сравнение: FFmpeg vs GUI-редакторы
| Критерий | FFmpeg | GUI-редактор |
|---|---|---|
| Автоматизация | + | − |
| Визуальная настройка | − | + |
| Быстрота | + (командная) | Зависит от интерфейса |
| Крутая кривая обучения | + | − |
Порядок действий: пример рабочего сценария для пакетной обработки
- Собрать список файлов.
- Протестировать конвертацию на одном файле с нужными параметрами.
- Запустить пакетную обработку через цикл или GNU Parallel.
- Проверить целевые устройства на воспроизведение.
Пример простого bash-скрипта для пакетной конвертации:
#!/bin/bash
mkdir -p converted
for f in *.mov; do
ffmpeg -i "$f" -c:v libx264 -preset fast -crf 23 -c:a aac "converted/${f%.*}.mp4"
doneКороткая галерея крайних случаев
- Повреждённый файл: ffmpeg может попытаться восстановить поток, но иногда требуется предварительная коррекция контейнера (ffmpeg -err_detect ignore_err).
- DRM: ffmpeg не декриптирует защищённый контент.
- Очень длинные видео: планируйте временные и дисковые ресурсы.
Заключение
FFmpeg — мощный инструмент для большинства задач по обработке мультимедиа на Linux. Он отлично подходит для автоматизации, пакетной обработки и потоковой работы. Для сложного интерактивного монтажа используйте GUI-редакторы в связке с FFmpeg (например, экспорт частей для последующей обработки). Следуйте чек-листам и тестам прежде чем запускать массовые операции.
Важно: начните с малых тестов и всегда сохраняйте оригиналы.
Ключевые ресурсы: ffmpeg -h, man ffmpeg, официальная документация проекта (ffmpeg.org).
Похожие материалы
Как изменить дату рождения в Facebook
Векторизация изображений онлайн — обзор инструментов
Как устроить идеальную вечеринку с Alexa
Включить тёмную тему в Instagram — Android, iPhone, Web
Как изменить пароль на Mac — быстро и безопасно