Найти в Дзене
ПрограмМистер

Обработка видео в консоли Linux с помощью FFmpeg

Оглавление

Не занимаюсь профессиональным монтажом, однако, иногда снимаю простые видео. Появляется необходимость вырезать какую-то кнкретную часть или обрезать начало\конец и для такой простой работы использовать мощную программу для монтажа не целесообразно.

Поэтому, я обрабатываю свои видео побыстрому, в консоли с использованием инструмента FFmpeg.

FFmpeg – это мощный набор инструментов с открытым исходным кодом для записи, конвертирования и потоковой передачи аудио и видео. Он поддерживает практически все известные аудио и видео форматы, что делает его незаменимым инструментом для обработки мультимедийных файлов в среде Linux.

Рассмотрим основные возможности FFmpeg и примеры использования для различных задач обработки видео.

Установка FFmpeg

Прежде чем начать работу, необходимо установить FFmpeg. В большинстве дистрибутивов Linux FFmpeg можно установить из стандартных репозиториев.

  • Для Ubuntu и Debian:

sudo apt install ffmpeg

  • Для Arch:

sudo pacman -S ffmpeg

Основные команды FFmpeg

FFmpeg работает через командную строку и использует следующую общую структуру команды:

ffmpeg [опции ввода] -i [входной файл] [опции вывода] [выходной файл]

  • -i указывает на входной файл.
  • Опции ввода и вывода позволяют настраивать различные параметры обработки.

Примеры использования

1. Конвертирование видео в другой формат

Конвертирование видео в другой формат
Конвертирование видео в другой формат

Чтобы конвертировать видеофайл из одного формата в другой, достаточно указать входной и выходной файлы с необходимыми расширениями.

Пример: Конвертирование видео из MOV в MP4.

ffmpeg -i ~/Videos/input.MOV ~/Videos/output.mp4

2. Извлечение аудио из видео

Извлечение аудио из видео
Извлечение аудио из видео

Можно извлечь аудиодорожку из видео и сохранить ее в отдельный файл.

Пример: Извлечение аудио в формат MP3.

ffmpeg -i ~/Videos/input.mp4 -q:a 0 -map a ~/Videos/audio/output.mp3

  • -q:a 0 задает наивысшее качество аудио.
  • -map a указывает на выбор всех аудиодорожек.

3. Обрезка видео

Обрезать видео по времени
Обрезать видео по времени

Чтобы обрезать видео по времени, используем опции -ss и -t.

Пример: Вырезать 30 секунд видео, начиная с 00:01:00.

ffmpeg -i ~/Videos/input.mp4 -ss 00:01:00 -t 00:00:30 -c copy ~/Videos/output.mp4

  • -ss задает время начала.
  • -t определяет продолжительность.
  • -c copy копирует кодеки без перекодирования, что ускоряет процесс.

4. Изменение разрешения видео

Для изменения размера видео используем фильтр scale.

Пример: Изменить разрешение видео на 1280x720.

ffmpeg -i ~/Videos/input.mp4 -vf scale=1280:720 ~/Videos/output.mp4

5. Слияние нескольких видеофайлов

Сначала создайте текстовый файл со списком видео для объединения.

Содержимое файла videos.txt:

file 'video1.mp4'
file 'video2.mp4'
file 'video3.mp4'

Команда для слияния:

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

  • -f concat указывает на режим конкатенации.
  • -safe 0 отключает проверку безопасности путей файлов.

6. Добавление водяного знака или наложения изображения

Наложить изображение logo.png на видео
Наложить изображение logo.png на видео

Можно добавить изображение поверх видео с помощью фильтра overlay.

Пример: Наложить изображение logo.png на видео.

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

  • overlay=10:10 размещает изображение в позиции (10,10) по осям X и Y.

7. Сжатие видео

Для уменьшения размера файла можно снизить битрейт или изменить кодек.

Пример: Сжать видео со снижением битрейта.

ffmpeg -i ~/Videos/input.mp4 -b:v 1000k -b:a 128k ~/Videos/output.mp4

  • -b:v 1000k устанавливает видео битрейт на 1000 kbps.
  • -b:a 128k устанавливает аудио битрейт на 128 kbps.

8. Захват кадра из видео

Чтобы сохранить определенный кадр видео как изображение:

ffmpeg -i ~/Videos/input.mp4 -ss 00:00:10 -vframes 1 ~/Videos/output.png

  • -ss указывает время кадра.
  • -vframes 1 сохраняет один кадр.

Заключение

FFmpeg – это универсальный инструмент для обработки видео и аудио в Linux. Благодаря гибкой системе опций и поддержке множества форматов, он позволяет выполнять практически любые задачи по конвертированию, редактированию и сжатию мультимедийных файлов.

Рекомендуется ознакомиться с официальной документацией FFmpeg для более глубокого понимания возможностей и дополнительных параметров.

Часто задаваемые вопросы

1. Можно ли использовать FFmpeg для потоковой передачи видео?

Да, FFmpeg поддерживает функции потоковой передачи и может быть использован для создания потоков в реальном времени.

2. Как узнать доступные кодеки и форматы?

Выполнить команду ffmpeg -codecs для списка кодеков и ffmpeg -formats для списка форматов.

3. FFmpeg сообщает об ошибке "Unknown encoder"?

Это означает, что необходимый кодек не поддерживается или не установлен. Убедимся, что FFmpeg собран с поддержкой нужных кодеков.