Главная >> Инструкции >> Как пользоваться ffmpeg

Как пользоваться ffmpeg

Если вы часто работаете с видео в операционной системе Linux, то наверное, слышали об утилите и наборе библиотек ffmpeg. Это мощная кроссплатформенная библиотека, которая позволяет делать почти любые действия с видео. Вы можете склеивать, кодировать, изменять, обрезать видео, но все это через терминал.

На первый взгляд, может показаться что это очень сложно. В какой-то мере это действительно так. Но у вас открываются широчайшие возможности настройки и очень большая гибкость. Графические инструменты часто сбоят, они могут не поддерживать тот или иной формат. Библиотека ffmpeg поддерживает все существующие форматы и работает практически всегда.

Она может вас спасти, когда другие программы зайдут в тупик. В этой статье мы рассмотрим полезные команды ffmpeg, которые пригодятся вам в повседневной работе с видео. В этой статье мы разберемся как пользоваться ffmpeg для обработки видео.


Содержание статьи

Что такое ffmpeg?

ffmpeg - это один из лучших мультимедийных фреймворков, который содержит различные инструменты, для решения разных задач. Например, ffplay - портативный медиа плеер, утилита ffmpeg может использоваться для обработки и инвертирования файлов, ffserver - для потоковой передачи данных, а ffprobe может анализировать мультимедийный поток.

В набор ffmpeg, кроме утилит, входят такие библиотеки: libavutil libavcodec libavformat libavdevice libavfilter libavresample libswscale libswresample libpostproc. Из-за своей архитектуры, этот набор инструментов очень безопасный, и с помощью него вы можете сделать почти все что угодно с видео или аудио. В этой статье мы будем рассматривать в основном утилиту ffmpeg. Давайте рассмотрим ее синтаксис:

$ ffmpeg [опции источника] -i [источник] [основные опции] [кодеки] [преемник]

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

Сейчас мы не будем подробно рассматривать опции, рассмотрим их потом, уже в самих командах.

Как пользоваться ffmpeg

Как я уже сказал, утилита ffmpeg поддерживает большинство аудио и видео форматов. Чтобы проверить какие форматы поддерживаются вы можете выполнить:

ffmpeg -formats

Если вы новичок в использовании этого инструмента, то вот некоторые команды, которые могут вам очень сильно помочь. Дальше вы узнаете как пользоваться ffmpeg.

1. Получить информацию о видео

Чтобы получить доступную информацию о видео, достаточно просто указать файл источника. Выполните такую команду:

ffmpeg -i video.mp4 -hide_banner

ffmpeg

Опция -hide_banner указывает программе, что не нужно показывать информацию о себе, опции сборки и так далее. Вы можете выполнить команду без этой опции, тогда получите всю информацию, в том числе и об ffmpeg:

ffmpeg -i video.mp4

ffmpeg2

2. Разбить видео на кадры

Чтобы разбить видео на изображения подойдет такая команда:

ffmpeg -i video.mp4 image%d.jpg

ffmpeg1

Утилита сгенерирует изображения с именами image1.jpg, image2.jpg, image3.jpg и так далее. После завершения вы найдете очень большое количество изображений в папке с видео.

3. Собрать видео из изображений

Вы можете взять полученный набор картинок и собрать все обратно в видео. Для этого выполните:

ffmpeg -f image2 -i image%d.jpg imagestovideo.mpg

ffmpeg7

 

Опция -f задает формат входного файла, вы можете использовать jpeg, png, jpg и другие картинки. И вы уже знаете как посмотреть поддерживаемые форматы ffmpeg.

4. Вытянуть звук из видео

Чтобы конвертировать видео в mp3 выполните команду:

ffmpeg -i video.mp4 -vn -ar 44100 -ac 2 -ab 192 -f mp3 audio.mp3

ffmpeg3Вот описание новых опций:

  • -vn - не обрабатывать видео, вся видео информация будет отброшена;
  • -ar - частота дискретизации, измеряется в герцах, чем больше, тем лучше качество звука;
  • -ab - устанавливает битрейт аудио;
  • -ac - устанавливает количество каналов;
  • -f - указывает формат полученного файла.

5. Конвертировать flv в mpg

Для конвертирования flv в mpg выполните:

ffmpeg -i video.flv video.mpg

6. Преобразовать видео в gif

Таким же самым образом можно переделать видео в анимированную gif картинку:

ffmpeg -i video.flv animated.gif

ffmpeg4

 

Мы не указываем кодеки ffmpeg и формат, потому что программа может их сама определить по расширению.

7. Преобразовать mpg в flv

Чтобы конвертировать видео mpg в flv выполните:

ffmpeg -i video.mpg -ab 26k -f flv video1.flv

Здесь мы уже задали битрейт и формат.

8. Преобразовать avi в mpeg

Для этого выполните команду:

ffmpeg -i video.avi -target pal-dvd -ps 2000000000 -aspect 16:9 video.mpeg

Использованные опции:

  • -target pal-dvd - формат исходящего файла;
  • -ps 2000000000 - максимальный размер полученного файла;
  • -aspect 16:9 - соотношение сторон экрана.

9. Конвертировать видео в CD или DVD формат

Чтобы выполнить конвертирование ffmpeg видео в формат DVD, нужно задать ваш формат с помощью опции -target. Доступны такие форматы: vcd, svcd, dvd, dv, pal-vcd или ntsc-svcd. Чтобы создать VCD выполните:

ffmpeg -i video.mpg -target vcd vcd_video.mpg

10. Склеить аудио и видео вместе

Вы можете собрать видео и звуковой файл в одну дорожку с помощью команды:

ffmpeg -i audio.mp3 -i video.avi video_audio_mix.mpg

11. Увеличить/уменьшить скорость видео

Чтобы увеличить скорость воспроизведения видео мы будем использовать фильтры, с помощью опции -vf. За скорость отвечает фильтр setpts. Например:

ffmpeg -i video.mpg -vf "setpts=4*PTS" highspeed.mpg

А так можно уменьшить скорость:

ffmpeg -i video.mpg -vf "setpts=0.5*PTS" lowerspeed.mpg -hide_banner

12. Вырезать прямоугольник из видео

Для того чтобы вырезать определенный участок кадра из видео тоже используются фильтры. На этот раз фильтр crop:

ffmpeg -i in.mp4 -vf "crop=out_w:out_h:x:y" out.mp4

  • out_w - ширина нужного прямоугольника;
  • out_h - высота нужного прямоугольника;
  • x,y - задают координаты прямоугольника от начала видео.

Например, обрежем прямоугольник размером 80х60 от позиции 100х200:

ffmpeg -i in.mp4 -vf "crop=80:60:200:100" video.mp4

Кроме этих опций, здесь можно задавать кодеки ffmpeg и форматы, чтобы параллельно выполнить кодирование ffmpeg.

13. Обрезать видео

Тут уже фильтры нам не помогут, но зато мы можем указать опциями из какого момента нужно начать и где завершить, например:

ffmpeg -i video.mp4 -ss 00:01:00 -t 00:01:00 -c copy video_clip.mp4

Начинаем от минуты и пишем еще минуту:

  • -ss задает время на видео, из которого стоит начать запись;
  • -t задает время когда запись нужно завершить относительно ss;
  • задает кодеки для аудио и видео, в нашем случае просто копировать файлы, ничего не перекодируя.

14. Склеить два видео

Чтобы склеить два видео используйте команду:

ffmpeg -i concat:"video1.mpg|video2.mpg" -c copy video.mpg

15. Проиграть видео

Вы можете быстро проиграть видео, чтобы оценить его качество, для этого есть команда:

ffplay video.mp4

ffmpeg5

Программа открывает и видео, и аудио.

16. Фото-баннер для аудио

Вы можете добавить фото баннер к вашей аудио записи с помощью следующей команды:

ffmpeg -loop 1 -i image.jpg -i Bryan\ Adams\ -\ Heaven.mp3 -c:v libx264 -c:a aac -strict experimental -b:a 192k -shortest output.mp4

Рассмотрим опции:

  • -loop - задает, что нужно всегда повторять оду и ту же картинку;
  • -i - задают входящие файлы, картинку и аудиофайл;
  • -с:v - задает видеокодек, эквивалентно -vc;
  • -c:a - задает аудиокодек, эквивалентно -ac;
  • -b:a - задает битрейт аудио, эквивалентно -ab;
  • -strict experimental - кодек aac для ffmpeg экспериментальный, поэтому чтобы его использовать нужна эта опция.

17. Добавить субтитры к видео

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

ffmpeg -i video.mp4 -i subtitles.srt -map 0 -map 1 -c copy -c:v libx264 -crf 23 -preset veryfast video-output.mkv

Выводы

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

На десерт видео по теме, что такое видеокодеки, кодеры, а также описание основных форматов видео:

Оставьте свой Email для того чтобы получать анонсы новых статей и полезную информацию о Linux по электронной почте
Pеклама
Посмотреть детали

Anubis – это максимально легкое open-source решение, созданное специально для защиты небольших веб-ресурсов от бесконечного потока запросов от ботов и AI парсеров. Этот инструмент можно считать "ядерным вариантом", потому что он заставляет ботов выполнять вычисления похожие на майнинг криптовалюты. Но это неплохая альтернатива для тех, кто не может или не хочет использовать Cloudflare. Посмотреть детали

10 комментариев к “Как пользоваться ffmpeg”

  1. Подкажите, как писать через vaapi с pulseaudio?

    Вот что наколдовал, но звука нет.

    ffmpeg -vaapi_device /dev/dri/renderD128 -f x11grab -video_size 1920x1080 -i $DISPLAY -r 59 -f pulse -ac 2 -i default
    -f alsa -i default
    -vf 'format=nv12,hwupload' -map 0:0 -threads 4 -aspect 16:9
    -y -vcodec h264_vaapi -c:a flac test.mkv

    Ответить
  2. Спасибо за хороший обзор.

    Добавьте пожалуйста, что concat работает не для всех контейнеров. Например, mp4 склеить таким образом не удастся, приходится перекодировать в avi с параметром -qscale 0 чтобы не потерять в качестве, склеивать avi и склеенное возвращать в mp4 с тем же параметром.

    И может быть кому-то интересно, что с помощью ffmpeg можно поворачивать и отзеркаливать видео (бывает нужно, если снимаешь видео на телефон):

    ffmpeg -i file.avi -vf transpose=1 file1.avi

    Опции transpose:
    0 — против часовой стрелки на 90° и зеркально;
    1 — по часовой стрелке на 90°;
    2 — против часовой стрелки на 90°;
    3 — по часовой стрелке на 90° и зеркально

    Также ffmpeg имеет фильтр реверса.
    Для видео без звука:

    ffmpeg -i video.mp4 -vf reverse reversed.mp4
    Для видео со звуком:

    ffmpeg -i video.mp4 -vf reverse -af areverse reversed.mp4
    Фильтр очень тяжёлый и энерго-памятнозатратный, поэтому длинные ролики желательно разделить на фрагменты, а потом склеить.

    Ответить
  3. Вариант 17. Добавить субтитры к видео, это только для 1 изображения, или так можно добавить 5, или 10, и прокручивать их в определенном интервале ? Или лучше для этого использовать другой алгоритм ?

    Ответить

Оставьте комментарий