Гид по технологиям

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

6 min read Видео Обновлено 22 Dec 2025
FFmpeg на Linux: установка и практические команды
FFmpeg на Linux: установка и практические команды

Работа с видео и звуком в 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

Вывод команды ffmpeg -version в терминале

Важно: некоторые дистрибутивы не включают проприетарные кодеки по умолчанию (например H.264/H.265). Для таких кодеков может понадобиться подключить внешние репозитории или собрать кодек вручную.

Получение информации о видео

Команда “-i” показывает метаданные, потоки и кодеки входного файла. Параметр -hide_banner скрывает служебную строку ffmpeg.

ffmpeg -i example-video.mp4 -hide_banner

Информация о видео, выведенная ffmpeg -i

Что можно получить: типы потоков (видео/аудио/субтитры), кодеки, разрешение, частоты дискретизации, длительность и метаданные.

Базовые операции: конвертация форматов

FFmpeg удобно использовать как “конвертер“ в одну строку.

MOV → MP4

ffmpeg -i input-mov-video.mov output-video.mp4

Если кодеки совместимы, можно копировать поток без перекодирования:

ffmpeg -i input.mov -c copy output.mp4

WAV → 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.mp4

FPS и 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?

  1. Нужен ли скрипт/автоматизация? → Да: FFmpeg.
  2. Нужен ли таймлайн и визуальный контроль? → Да: GUI-редактор.
  3. Требуется высокая совместимость кодека? → Проверьте целевые плейбэки и лицензии.
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 для строгих пайплайнов.
  • Системный администратор:

    • Убедиться в поддержке аппаратного ускорения (VAAPI, NVENC).
    • Ограничить права на входные/выходные каталоги.
    • Планировать обновления и совместимость библиотек.

Мини-методология: безопасный рабочий процесс

  1. Создайте копию исходника.
  2. Получите метаданные: ffmpeg -i src.
  3. Протестируйте один короткий фрагмент с желаемыми параметрами.
  4. Примените к полному файлу или в пакетном режиме.
  5. Проверяйте результаты на целевых устройствах.

Тест-кейсы и критерии приёмки

Критерии приёмки для автоматической конвертации в 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-редакторы

КритерийFFmpegGUI-редактор
Автоматизация+
Визуальная настройка+
Быстрота+ (командная)Зависит от интерфейса
Крутая кривая обучения+

Порядок действий: пример рабочего сценария для пакетной обработки

  1. Собрать список файлов.
  2. Протестировать конвертацию на одном файле с нужными параметрами.
  3. Запустить пакетную обработку через цикл или GNU Parallel.
  4. Проверить целевые устройства на воспроизведение.

Пример простого 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).

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Как изменить дату рождения в Facebook
Социальные сети

Как изменить дату рождения в Facebook

Векторизация изображений онлайн — обзор инструментов
Дизайн

Векторизация изображений онлайн — обзор инструментов

Как устроить идеальную вечеринку с Alexa
Гаджеты

Как устроить идеальную вечеринку с Alexa

Включить тёмную тему в Instagram — Android, iPhone, Web
Руководство

Включить тёмную тему в Instagram — Android, iPhone, Web

Как изменить пароль на Mac — быстро и безопасно
Mac инструкции

Как изменить пароль на Mac — быстро и безопасно

Обрезать и редактировать фото в Google Photos на Android
Фотография

Обрезать и редактировать фото в Google Photos на Android