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

в 17:59, , рубрики: ffmpeg, imagemagick, Настройка Linux, сжатие данных

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

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

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

Библиотека 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

Увидеть все поддерживаемые кодеки можно командой ffpmeg -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

Автор: temujin

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js