Pull to refresh

Укрощаем мультимедиа с помощью ffmpeg

Reading time 3 min
Views 86K

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





Впрочем зачем себя ограничивать экономией дискового пространства? Предлагаю узнать удивительные возможности обработки фотографий, аудио и видео данных, утилитами командной строки.


Библиотека ffmpeg и обработка видео


Библиотека с открытым исходным кодом ffmpeg скорее всего уже установлена на вашей операционной системе. Если же нет, установите его штатной программой управления пакетами, это не займет много времени.


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


ffmpeg -i file.<old_extension> [options] file.<new_extension>

Уменьшаем видео, записанное на фотоаппарате:


ffmpeg -i MVI_4703.MOV MVI_4703.avi

То же самое, но с контролем качества.


ffmpeg -i MVI_4703.MOV -q:v 4 MVI_4703.avi

Размер видео уменьшился более чем в 5 раз без ощутимой потери качества. Опция -qscale:v n, сокращенно -q:v n позволяет установить уровень качества генерируемого видеопотока, где n принимает значения в интервале от 1 до 31. Значение 1 соответствует самому лучшему качеству, а 31 — самому худшему.


-rw-r--r-- 1 mig users 124M июл 18 23:29 foto/MVI_4703.avi
-rw-r--r-- 1 mig users 686M июн 27 21:38 foto/MVI_4703.MOV

Указать кодек


Для того, чтобы выбрать нужный нам кодек используем ключи -c:a <codec> -c:v <codec>.


ffmpeg -i video.mp4 -c:v vp9 -c:a libvorbis video.mkv

Увидеть все поддерживаемые кодеки можно командой ffmpeg -codecs.


Поменять контейнер файла


Возьмем теперь такой юзкейс случай. Встроенный плеер вашего телевизора поддерживает формат mkv, но не поддерживает m4v. Для того, чтобы поменять контейнер воспользуемся следующей командой.


ffmpeg -i video.m4v -c:av copy video.mkv

Если же нужно поменять только звук, а видео оставить как есть, запускаем эту команду. Почему-то телевизоры Филипс понимают только форматы звука AAC/AC3.


ffmpeg -i video.m4v -c:v copy -c:a aac video.mkv

Добавить звуковую дорожку


Просто перечисляем файлы ввода и задаем вывод.


ffmpeg -i video.mp4 -i audio.ogg video_sound.mp4

Извлечь звуковую дорожку


Если нужно просто извлечь звук, то можно так.


ffmpeg -i video.MOV -vn audio.ogg

Задаем формат извлекаемой звуковой дорожки.


ffmpeg -i video.MOV -vn -c:a flac audio.flac

Указывает приемлемый битрейт, по умолчанию будет записано 128k.


ffmpeg -i video.MOV -vn -c:a flac -b:a 192k audio.flac

Делаем слайд-шоу из картинок


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


ffmpeg -r .3 -pix_fmt rgba -s 1280x720 -pattern_type glob -i "*.JPGЭ video.mkv

Требуются некоторые пояснения.


  • -r number — частота кадров в секунду.
  • -pix_fmt — Пиксельный формат, список из команды ffmpeg -pix_fmts. Не со всеми форматами получается выставить нужный размер кадра.
  • -pattern_type glob — Для того, чтобы использовать совпадение по шаблону как в командной оболочке. Альтернативой является использование формата C printf, например image%03d.png для всех image0001.png, image0002.png и т. д.

Изменить видеопоток


Допустим, вам нужен не весь видео файл, а лишь часть его. Данная команда вырежет 10 секунд видео, начиная с первой минуты.


ffmpeg -i video_full.m4v -c:av copy -ss 00:01:00 -t 10 video_short.m4v

Как повысить качество потоков аудио или видео? Для этого используется ключ битрейта -b.


ffmpeg - video.webm -c:a copy -c:v vp9 -b:v 2M final.mkv

Захват экрана


Для захвата экрана используется устройство x11grab, а ffmpeg должен быть собран с опцией --enable-x11grab.


ffmpeg -f x11grab -framerate 25 -video_size 4cif -i :0.0 out.mpg

  • -video_size word — Размер захвата, cif = 352x288, 4cif = 704x576. Подробнее в info ffmpeg-utils.

Бонусная дорожка


Для автоматической обработки фотографий удобно работать с программой ImageMagick. Поменять размер всех фотографий в папке.


mogrify -resize 60% *.png

Аккуратное повышение резкости изображения, наподобие Smart Sharpen с помощью Perl скрипта, использующего convert и composite из набора утилит ImageMagick.


Ссылки по теме


  1. Хабрапост про ffmpeg, много полезных команд, однако синтаксис для большинства уже успел поменяться.
  2. A quick guide to using FFmpeg to convert media files
  3. Настройка качества кодировки в FFmpeg: переменный и постоянный битрейт для Mpeg4
Tags:
Hubs:
If this publication inspired you and you want to support the author, do not hesitate to click on the button
+32
Comments 33
Comments Comments 33

Articles