ѕодпишитесь на наш Telegram-канал Ѕудьте в курсе последних новостей 👇 😉 ѕодписатьс€
ѕоддержим в трудное врем€ —пециальное предложение на техническую поддержку вашей »“ - инфраструктуры силами наших экспертов ѕодобрать тариф
ѕоставка оборудовани€ √аранти€ и помощь с настройкой. —кидка дл€ наших читателей по промокоду WIKIMERIONET  упить
»нтерфейс статистики Merion Mertics показывает ключевые диаграммы и графики по звонкам, а также историю звонков в формате, который легко поймет менеджер ѕопробовать бесплатно
¬недрение
офисной телефонии
Ўаг на пути к созданию доступных унифицированных коммуникаций в вашей компании ¬недрить
»нтеграци€ с CRM ѕомогаем навести пор€док с данными
и хранить их в единой экосистеме
ѕодключить
»“ Ѕезопастность ”мна€ информационна€ безопасность дл€ вашего бизнеса «аказать
ћерион Ќетворкс

19 минут чтени€

¬ этом подробном руководстве показано, как установить ffmpeg в Ubuntu и других дистрибутивах Linux. ќн также демонстрирует некоторые полезные команды ffmpeg дл€ практического использовани€.

ѕолное руководство по использованию ffmpeg в Linux

ffmpeg - это утилита командной строки (CLI) дл€ обработки мультимедийных файлов. Ёто фреймворк с множеством функций и, благодар€ лицензии с открытым исходным кодом, €вл€етс€ основой дл€ многих распространенных приложений, таких как VLC, YouTube, iTunes и многих других. –€д видеоредакторов дл€ Linux используют ffmpeg под GUI.

¬ этом руководстве мы расскажем, как установить ffmpeg, и как использовать его базовые и продвинутые функции.


”становка ffmpeg в Linux

”становка ffmpeg - это простой процесс. Ёто попул€рное приложение, которое доступно в большинстве дистрибутивов Linux через менеджер пакетов.

”становка ffmpeg в Ubuntu

¬ Ubuntu ffmpeg доступен в репозитории Universe , поэтому убедитесь, что он включен. а затем обновите список пакетов и установите ffmpeg. ¬ы можете сделать все это, использу€ следующие команды в терминале:

sudo add-apt-repository universe
sudo apt update
sudo apt install ffmpeg

√отово! „тобы проверить установку выполните:

ffmpeg	

¬ы должны увидеть вывод, описывающий вашу конфигурацию ffmpeg, включа€ версию.

¬ерси€ ffmpeg

 ак вы можете видеть на скриншоте выше, установлена верси€ 3.4.4. ќднако последн€€ верси€ ffmpeg на момент написани€ этой статьи - 4.2. „тобы установить любую версию 4.x, вы должны установить ffmpeg через PPA (персональный архив пакетов).

—уществует неофициальный PPA, который вы можете использовать дл€ установки последней версии ffmpeg. ѕросто используйте эти команды:

sudo add-apt-repository ppa:jonathonf/ffmpeg-4
sudo apt update
sudo apt install ffmpeg -y

”становка ffmpeg в дистрибутивах на основе Arch

„тобы установить ffmpeg в дистрибутивах на основе Arch, используйте следующую команду:

sudo pacman -S ffmpeg

”становка ffmpeg в дистрибутивах на основе Fedora

„тобы установить ffmpeg в дистрибутивы Linux на основе Fedora, вы можете использовать эту команду:

sudo dnf install ffmpeg

”становка ffmpeg в CentOS/RHEL

FFmpeg недоступен в репозитори€х CentOS 8 по умолчанию. ¬ы можете собрать инструменты ffmpeg из исходного кода или установить его с помощью утилиты dnf из репозитори€ Negativo17.

–епозиторий Negativo17 зависит от репозиториев EPEL (Extra Packages for Enterprise Linux) и PowerTools. ƒл€ их включени€ используйте:

sudo dnf install epel-release
sudo yum config-manager --set-enabled PowerTools
sudo yum-config-manager --add-repo=https://negativo17.org/repos/epel-multimedia.repo

ѕосле включени€ этих репозиториев уже можно установить сам ffmpeg:

sudo dnf install ffmpeg

”становка ffmpeg в Debian

ќфициальные репозитории Debian содержат пакеты FFmpeg, которые можно установить с помощью менеджера пакетов apt.

sudo apt install ffmpeg	

 ак использовать ffmpeg: ќсновы

— установленным ffmpeg перейдем к основным командам, чтобы вы начали использовать этот мощный инструмент.

ќсновные строительные блоки ffmpeg:

  • ffmpeg - инструмент командной строки дл€ конвертации мультимедийных файлов между форматами
  • ffplay - простой медиаплеер на основе SDL и библиотек FFmpeg
  • ffprobe - простой мультимедийный анализатор потоков

ffmpeg также содержит библиотеки дл€ разработчиков - libavutil, libavcodec, libavformat, libavdevice, libavfilter, libswscale и libswresample.

ѕроцесс транскодировани€ в ffmpeg дл€ может быть описан следующей схемой:

ѕроцесс транскодировани€

0.  оманды ffmpeg

ќсновна€ форма команды ffmpeg:

ffmpeg [global_options] {[input_file_options] -i input_url} ... {[output_file_options] output_url} ...

¬ы должны иметь в виду, что все параметры файла примен€ютс€ только к файлу, который следует за ними (и вы должны будете записать их снова дл€ следующего файла).

Ћюбой файл, которому не предшествует -i, считаетс€ выходным файлом. ffmpeg использует столько входов и выходов, сколько вы предоставл€ете. ¬ы также можете использовать одно и то же им€ как дл€ входного, так и дл€ выходного файла, но вам придетс€ добавить тег -y перед именем выходного файла.

¬ы не должны смешивать входы и выходы: сначала укажите входные файлы, затем укажите выходные файлы.

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

ѕервое использование ffmpeg - отображение информации о медиафайле. Ёто можно сделать, не ввод€ никаких выходных файлов. ѕросто введите:

ffmpeg -i file_name

Ёто работает дл€ аудио и видео файлов:

ffmpeg -i video_file.mp4 
ffmpeg -i audio_file.mp3
ќтображение информации о мультимедийном файле с помощью ffmpeg

’от€ эта команда полезна, она отображает слишком много информации, котора€ не относитс€ к вашему файлу (информаци€ о ffmpeg). „тобы пропустить это, добавьте флаг -hide_banner:

ffmpeg -i video_file.mp4 -hide_banner 
ffmpeg -i audio_file.mp3 -hide_banner	
-hide_banner

 ак вы можете видеть, команда теперь выводит только информацию, касающуюс€ указанного вами медиа-файла (кодировщик, потоки и так далее).

2.  онвертировать медиа файлы

≈ще один очень полезный способ использовани€ ffmpeg - это беспроблемное преобразование между различными форматами мультимедиа. ¬ам нужно только указать входные и выходные файлы, так как ffmpeg получит требуемый формат из расширений файлов. Ёто работает дл€ преобразовани€ видео в видео и аудио в аудио.

¬от некоторые примеры:

ffmpeg -i video_input.mp4 video_output.avi 
ffmpeg -i video_input.webm video_output.flv 
ffmpeg -i audio_input.mp3 audio_output.ogg 
ffmpeg -i audio_input.wav audio_output.flac	

¬ы даже можете указать больше выходных файлов:

ffmpeg -i audio_input.wav audio_output_1.mp3 audio_output_2.ogg

Ёто преобразует входные файлы во все указанные форматы.

„тобы увидеть список всех поддерживаемых форматов, используйте:

ffmpeg -formats

ќп€ть же, вы можете добавить -hide_banner, чтобы опустить информацию о приложении.

¬ы можете указать параметр -qscale 0 перед выходным файлом, чтобы сохранить качество видеофайла:

ffmpeg -i video_input.wav -qscale 0 video_output.mp4	

 роме того, вы можете указать кодеки, которые вы хотите использовать, добавив -c:a (дл€ аудио) и -c:v (дл€ видео) с последующим названием кодеков, или скопировать, если хотите использовать те же кодеки, что и оригинальный файл:

ffmpeg -i video_input.mp4 -c:v copy -c:a libvorbis video_output.avi

3. »звлечение аудио из видео

„тобы извлечь аудио из видеофайла, вы делаете простое преобразование и добавл€ете флаг -vn:

ffmpeg -i video.mp4 -vn audio.mp3

ќбратите внимание, что эта команда будет использовать битрейт (скорость передачи) исходного файла. ¬ы можете установить его вручную, и дл€ этого использовать -ab (audio bit rate):

ffmpeg -i video.mp4 -vn -ab 128k audio.mp3

Ќекоторые распространенные битрейты: 96  Ѕ, 128  Ѕ, 192  Ѕ, 256  Ѕ, 320  Ѕ (максимальный битрейт, поддерживаемый mp3). ƒругими общими параметрами €вл€ютс€ -ar (частота звука: 22050, 441000, 48000), -ac (количество аудиоканалов), -f (формат аудио, хот€ обычно определ€етс€ автоматически). -ab также можно заменить на -b:a. Ќапример:

ffmpeg -i video.mov -vn -ar 44100 -ac 2 -b:a 128k -f mp3 audio.mp3	

4. ќтключение звука в видео

 ак и в последнем примере, дл€ этого мы добавим простой тег: -an (вместо -vn).

ffmpeg -i video_input.mp4 -an -video_output.mp4
ѕримечание: “ег -an сделает все параметры звука дл€ этого выходного файла бесполезными, поскольку в результате операции не будет звука.

5. »звлечение изображений из видео

ƒопустим, у вас есть сери€ изображений (например, слайд-шоу), и вы хотите получить все изображени€ из этого. ѕросто введите:

ffmpeg -i video.mp4 -r 1 -f image2 image-%3d.png

-r указывает частоту кадров (сколько кадров извлекаетс€ в изображени€ за одну секунду, по умолчанию: 25), -f указывает формат вывода.

ѕоследний параметр (выходной файл) имеет несколько интересное название: в конце он использует %3d. Ёто просто нумерует ваши изображени€ с 3 цифрами (000, 001 и так далее). ¬ы также можете использовать %2d (двухзначный формат) или даже %4d (четырехзначный формат), если хотите.

6. »зменение разрешени€ видео или соотношени€ сторон

≈ще одно простое задание дл€ ffmpeg. ¬се, что вам нужно сделать, чтобы изменить размер видео, это указать новое разрешение после флага -s:

ffmpeg -i video_input.mov -s 1024x576 video_output.mp4

 роме того, вы можете указать -c:a, чтобы убедитьс€ в правильности аудиокодеков выходного файла:

ffmpeg -i video_input.h264 -s 640x480 -c:a video_output.mov	

¬ы также можете изменить соотношение сторон, использу€ -aspect:

ffmpeg -i video_input.mp4 -aspect 4:3 video_output.mp4

7. ƒобавить изображение обложки в аудио

Ёто отличный способ превратить аудио в видео, использу€ одну фотографию (например, обложку альбома) дл€ аудио. Ёто очень полезна€ функци€, когда вы хотите загружать аудиофайлы на сайты, на которых не разрешено ничего, кроме видео и изображений (YouTube и Facebook €вл€ютс€ примерами таких сайтов).

¬от пример:

ffmpeg -loop 1 -i image.jpg -i audio.wav -c:v libx264 -c:a aac -strict experimental -b:a 192k -shortest output.mp4

ѕросто измените кодеки (-c:v указывает видеокодеки, -c:a указывает аудиокодеки) и имена ваших файлов. “акже вам не нужно использовать -strict experimental, если вы используете более новую версию (4.x).

8. ƒобавить субтитры к видео

ffmpeg просто добавить субтитры к видео. ¬ведите следующее:

ffmpeg -i video.mp4 -i subtitles.srt -c:v copy -c:a copy -preset veryfast -c:s mov_text -map 0 -map 1 output.mp4

 онечно, вы можете указать любые кодеки, которые вы хотите (и любые другие дополнительные параметры, св€занные с аудио и видео).

9. —жатие медиа-файлов

—жатие файлов значительно уменьшает размер файла, эконом€ вам много места. Ёто может быть важно дл€ передачи файлов. — ffmpeg есть несколько способов уменьшить размер файла.

ѕримечание: —лишком большое сжатие файлов заметно ухудшит качество получаемого файла.

ѕрежде всего, дл€ аудиофайлов просто уменьшите битрейт (использу€ -b:a или -ab):

ffmpeg -i audio_input.mp3 -ab 128k audio_output.mp3
ffmpeg -i audio_input.mp3 -b:a 192k audio_output.mp3

ќп€ть же, некоторые значени€ битрейта: 96k, 112k, 128k, 160k, 192k, 256k, 320k. „ем выше битрейт, тем выше размер файла и качество.

ƒл€ видео файлов у вас есть больше вариантов. ќдин из способов - уменьшить битрейт видео (использу€ -b:v):

ffmpeg -i video_input.mp4 -b:v 1000k -bufsize 1000k video_output.mp4

¬ы можете установить флаг -crf (Constant Rate Factor - коэффициент посто€нной скорости). „ем ниже CRF, тем выше скорость передачи данных. “акже помогает использование libx264 в качестве видеокодека. ¬от очень эффективное уменьшение размера с очень небольшим снижением качества:

ffmpeg -i video_input.mp4 -c:v libx264 -crf 28 video_output.mp4

CRF от 20 до 30 распространен, но можно выставл€ть и другие значени€.

—нижение частоты кадров (фреймрейта) может работать в некоторых случа€х (хот€ это может очень легко сделать видео медленным):

ffmpeg -i video_input.mp4 -r 24 video_output.mp4	
-r указывает частоту кадров (в данном случае 24).

¬ы также можете попробовать уменьшить разрешение видео (смотри выше как это сделать). ƒополнительным советом €вл€етс€ сжатие звука, дела€ его стереофоническим и снижа€ скорость передачи данных. Ќапример:

ffmpeg -i video_input.mp4 -c:v libx264 -ac 2 -c:a aac -strict -2 -b:a 128k -crf 28 video_output.mp4
ѕримечание: -strict -2 и -ac 2 позабот€тс€ о стерео части

10. ќбрезать медиа файлы

„тобы обрезать файлы с самого начала, вы должны указать продолжительность, использу€ -t:

ffmpeg -i input_video.mp4 -t 5 output_video.mp4 
ffmpeg -i input_audio.wav -t 00:00:05 output_audio.wav

 ак видите, это работает как дл€ видео, так и дл€ аудио файлов. ќбе команды выше делают одно и то же: сохран€ют первые 5 секунд входного файла в выходной файл. ћожно использовать различные способы ввода длительности, как видно в примере - одно число (количество секунд) и „„:ћћ:—— (часы, минуты, секунды).

¬ы можете пойти еще дальше, указав врем€ начала с -ss и даже врем€ окончани€ с -to:

ffmpeg -i input_audio.mp3 -ss 00:01:14 output_audio.mp3
ffmpeg -i input_audio.wav -ss 00:00:30 -t 10 output_audio.wav 
ffmpeg -i input_video.h264 -ss 00:01:30 -to 00:01:40 output_video.h264 
ffmpeg -i input_audio.ogg -ss 5 output_audio.ogg

¬ы можете тут видеть врем€ начала -ss („„:ћћ:——), длительность -t в секундах, врем€ окончани€ -to („„:ћћ:——) и врем€ начала -s (начать после указанного времени в секундах).


 ак использовать ffmpeg: –асширенное использование

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

1. ќбрезка медиа-файлов

„тобы разделить файл на несколько частей, нужно указать несколько разделений (указать врем€ начала, врем€ окончани€ или продолжительность перед каждым выходным файлом).

ѕосмотрите на этот пример:

ffmpeg -i video.mp4 -t 00:00:30 video_1.mp4 -ss 00:00:30 video_2.mp4

—интаксис довольно прост. ћы указали -t 00:00:30 как продолжительность дл€ первой части (перва€ часть будет состо€ть из первых 30 секунд исходного видео). ƒалее мы указали, что мы хотели бы, чтобы остальные были частью второго видео (начина€ с конца последней части, 00:00:30).

Ёто можно сделать дл€ любого количества частей. »мейте в виду, что это работает со звуком тоже.

2. —клейка медиа-файлов

ffmpeg также может выполнить противоположный процесс: собрать несколько частей вместе.

ƒл€ этого вам нужно будет создать новый текстовый файл и начать редактировать его, использу€ предпочитаемый вами редактор. ¬ примере мы будем использовать touch и >vim. Ќеважно, как вы называете этот файл. Ќапример, назовем его join.txt и создадим, использу€ touch:

touch videos_to_join.txt

“еперь отредактируем его в vim

vim videos_to_join.txt

«десь введите полные пути ко всем файлам, которые вы хотите присоединить (они будут объединены в том пор€дке, в котором вы их здесь пишете), по одному на строку. ”бедитесь, что они имеют одинаковое расширение (например, mp4). ¬от пример:

/home/ubuntu/Desktop/video_1.mp4
/home/ubuntu/Desktop/video_2.mp4
/home/ubuntu/Desktop/video_3.mp4	

—охраните файл, который вы только что отредактировали. Ётот метод работает дл€ любых аудио или видео файлов.

“еперь введите следующее:

ffmpeg -f concat -i join.txt output.mp4
ѕримечание: наш выходной файл - output.mp4, потому что все наши входные файлы имеют расширение mp4.

Ёто должно объединить все файлы, которые мы записали в join.txt, в один выходной файл.

3. —оедините изображени€ в видео

“аким образом вы можете создать слайдшоу или что-то подобное.

ѕервое, что мы рекомендуем сделать, это убедитьс€, что фотографии, которые вы хотите собрать, наход€тс€ в одном каталоге. ћы поместим наши в папку my_photos. ƒл€ картинок рекомендуютс€ расширени€ .png и .jpg.  акой бы вариант вы ни выбрали, убедитесь, что все изображени€ имеют одинаковое расширение.

‘ормат -f нашего преобразовани€ должен быть image2pipe. ƒл€ ввода необходимо указать дефис -. image2pipe позвол€ет вам пайпировать (pipe), использу€ |, результаты команды, такой как cat, в ffmpeg вместо того, чтобы вводить все имена одно за другим. „тобы это работало, мы также должны упом€нуть, что мы хотим, чтобы видеокодеки были скопированы -c:v copy (чтобы правильно использовать изображени€):

cat my_photos/* | ffmpeg -f image2pipe -i - -c:v copy video.mkv

≈сли вы воспроизводите этот файл, вы можете подумать, что в слайд-шоу были добавлены только некоторые изображени€. Ќа самом деле все ваши фотографии были добавлены, но ffmpeg проходит по ним их как можно быстрее. Ёто означает 1 кадр на фотографию, ffmpeg по умолчанию работает со скоростью около 23 кадров в секунду.

„тобы изменить это, вам нужно указать желаемую частоту кадров -framerate:

cat my_photos/* | ffmpeg -framerate 1 -f image2pipe -i - -c:v copy video.mkv 

¬ нашем примере мы устанавливаем частоту кадров равную 1, что означает, что каждый кадр (что также означает каждое изображение) по€вл€етс€ в течение 1 секунды.

„тобы добавить аудио, например, фоновую песню, нам нужно указать аудиофайл в качестве входного файла -i audo_file и скопировать аудиокодеки -c: copy. ƒл€ кодеков вы можете копировать аудио и видео кодеки одновременно с -c copy. ”бедитесь, что вы установили кодеки пр€мо перед указанием выходного файла. ¬ы также можете установить частоту кадров, чтобы все ваши изображени€ синхронизировались с продолжительностью звука, который вы хотите использовать. „тобы сделать это, разделите количество изображений на продолжительность аудио (в секундах). ƒл€ нашего примера у нас есть аудиофайл длиной 22 секунды и 9 изображений. 9 разделить на 22 составл€ет приблизительно 0,40, поэтому мы будем использовать это дл€ нашей частоты кадров:

cat my_photos/* | ffmpeg -framerate 0.40 -f image2pipe -i - -i audio.wav -c copy video.mkv

4. «апись экрана

“ут нужно использовать формат -f x11grab. Ёто запишет ваш XSERVER. ¬ качестве входных данных вы должны будете указать номер вашего экрана (основной экран обычно должен быть 0:0). Ќо это будет захватывать только верхнюю левую часть экрана. ¬ы должны добавить размер экрана (или экранов). Ќаш размер - 1920?1080. –азмер экрана должен быть указан перед вводом:

ffmpeg -f x11grab -s 1920x1080 -i :0.0 output.mp4

Ќажмите q или CTRL + C в любое врем€, чтобы остановить запись.

¬ы можете сделать размер выходного файла полноэкранным, введ€ следующее дл€ размера (вместо 1920?1080 или любого другого установленного разрешени€):

-s $(xdpyinfo | grep dimensions | awk '{print $2;}')

ѕолна€ команда:

ffmpeg -f x11grab -s $(xdpyinfo | grep dimensions | awk '{print $2;}') -i :0.0 output.mp4

5. «апишите свою веб-камеру

«апись ввода с вашей веб-камеры (или другого устройства, такого как USB-камера) еще проще. ¬ Linux устройства хран€тс€ в /dev как /dev/video0, /dev/video1 и так далее:

ffmpeg -i /dev/video0 output.mkv

» также нажмите q или CTRL + C, чтобы остановить запись.

6. «апишите ваше аудио

Linux обрабатывает аудио в основном через ALSA и pulseaudio. ffmpeg может записывать оба, но мы рассмотрим pulseaudio, так как дистрибутивы на основе Debian включают его по умолчанию. —интаксис немного отличаетс€ дл€ двух методов.

ƒл€ pulseaudio, вы должны использовать force -f alsa и указать устройство ввода по умолчанию как input -i default:

ffmpeg -f alsa -i default output.mp3	

¬ настройках звука у дистрибутива убедитесь, что записывающим устройством по умолчанию €вл€етс€ то устройство, которое вы хотите записать.

 онечно, дл€ любого типа записи вы также можете указать кодеки. ¬ы можете выбрать конкретную частоту кадров -r. ¬ы также можете совмещать запись звука с записью с веб-камеры/экрана.

ffmpeg -i /dev/video0 -f alsa -i default -c:v libx264 -c:a flac -r 30 output.mkv	

¬место записи звука вы можете так же легко добавить аудиофайл в качестве звука поверх дл€ записи экрана или веб-камеры:

ffmpeg -f x11grab -s $(xdpyinfo | grep dimensions | awk '{print $2;}') -i :0.0 -i audio.wav -c:a copy output.mp4	
«аписи в ffmpeg мелкими, поэтому очень маленька€ запись может не сохранитьс€. ћы рекомендуем сделать запись немного дольше и затем обрезать ее (если вам нужно всего несколько секунд), просто чтобы убедитьс€, что файл действительно будет записан на ваш диск.

ќсновное использование фильтров в ffmpeg

‘ильтры €вл€ютс€ неверо€тно мощной функцией ffmpeg. ¬ам доступно огромное количество фильтров, что делает ffmpeg полностью способным обрабатывать любые потребности редактировани€.

ќсновна€ структура дл€ использовани€ фильтра:

ffmpeg -i input.mp4 -vf "filter=setting_1=value_1:setting_2=value_2" output.mp4
ffmpeg -i input.wav -af "filter=setting_1=value_1:setting_2=value_2" output.wav	

 ак вы можете видеть, мы указываем видео фильтры -vf, (сокращенно от -filter:v) и аудио фильтры -af, (сокращенно от -filter:a). ‘актические фильтры пишутс€ в двойных кавычках " и могут быть объединены в цепочку через зап€тую ,. ¬ы можете указать столько фильтров, сколько хотите.

ќбща€ форма фильтра:

filter=setting_2=value_2:setting_2=value_2

–азличные настройки фильтра и их значени€ разделены двоеточи€ми. ¬ы также можете выполн€ть математические операции в качестве значений дл€ различных настроек.

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

1. ћасштабирование видео

Ёто очень простой фильтр. ≈динственными настройками €вл€ютс€ ширина w и высота h:

ffmpeg -i input.mp4 -vf "scale=w=800:h=600" output.mp4

 ак мы уже упоминали, вы можете использовать математические операции дл€ значений:

ffmpeg -i input.mkv -vf "scale=w=1/2*in_w:h=1/2*in_h" output.mkv	

Ёта команда устанавливает размер вывода равным половине (1/2) от размера ввода in_w, in_h.

2. ќбрезка видео

„то касаетс€ фильтра масштабировани€, настройки - это ширина и высота результирующего файла. ѕри желании вы можете указать координаты дл€ верхнего левого угла разреза (по умолчанию: центр входного видео):

ffmpeg -i input.mp4 -vf "crop=w=1280:h=720:x=0:y=0" output.mp4 
ffmpeg -i input.mkv -vf "crop=w=400:h=400" output.mkv	

 ак уже отмечалось, втора€ обрезка будет вырезать в центре входного файла (так как мы не указали координаты x и y дл€ верхнего левого угла). ѕерва€ команда будет вырезать из левого верхнего угла x=0:y=0.

¬от пример, который использует математические выражени€ в качестве значений:

ffmpeg -i input.mkv -vf "crop=w=3/4*in_w:h=3/4*in_h" output.mkv

Ёта команда устанавливает размер вывода на 3/4 от размера ввода (in_w, in_h).

3. ѕоворот видео

¬ы также можете повернуть видео по часовой стрелке на определенную величину в радианах. „тобы упростить задачу, вы можете указать значение в градусах и преобразовать его в радианы, умножив это значение на PI/180:

ffmpeg -i input.avi -vf "rotate=90*PI/180" 
ffmpeg -i input.mp4 -vf "rotate=PI"

ѕерва€ команда повернет видео по часовой стрелке на 90 градусов. ¬тора€ команда перевернет видео вверх ногами (PI рад = 180 градусов).

4. ѕреобразование аудиоканала

Ёто может быть полезно, если вы каким-то образом получаете звук только в правом ухе или что-то подобное. ¬ы можете сделать звук слышимым из обоих ушей (в данном конкретном случае) следующим образом:

ffmpeg -i input.mp3 -af "channelmap=1-0|1-1" output.mp3	

Ёто мапит правый 1 аудиоканал на левый 0 и правый 1 аудиоканалы (левое число представл€ет собой вход, правое число представл€ет собой выход).

5. ”величение громкости звука

¬ы можете умножить громкость звука на любое действительное число. ¬ам нужно только указать множитель:

ffmpeg -i input.wav -af "volume=1.5" output.wav 
ffmpeg -i input.ogg -af "volume=0.75" output.ogg	

ѕерва€ команда увеличивает громкость в 1,5 раза. ¬тора€ команда делает звук в 1/4 (0,25) раза тише.

6. Ќастройка скорости воспроизведени€

‘ильтр дл€ видео - setpts (PTS = presentation time stamp). ѕоскольку мы на самом деле модифицируем PTS, больший коэффициент означает более медленный результат, и наоборот:

ffmpeg -i input.mkv -vf "setpts=0.5*PTS" output.mkv 
ffmpeg -i input.mp4 -vf "setpts=2*PTS" output,mp4

ѕерва€ команда удваивает скорость воспроизведени€, а втора€ команда замедл€ет видео до 1/2 скорости.

‘ильтр дл€ аудио - atempo. ≈сть одно маленькое предостережение: оно может принимать значени€ только от 0,5 (половина скорости) до 2 (удвоение скорости). „тобы обойти это, вы можете использовать их один за другим:

ffmpeg -i input.wav -af "atempo=0.75" output.wav 
ffmpeg -i input.mp3 -af "atempo=2.0,atempo=2.0" ouutput.mp3

ѕерва€ команда замедл€ет звук на 1/4 от первоначальной скорости. ¬тора€ команда ускор€ет звук в 4 раза (2*2)

„тобы изменить скорость воспроизведени€ видео и аудио с помощью одной и той же команды, вам нужно использовать filtergraphs

7. ƒобавить вод€ной знак

ƒл€ размещени€ вод€ного знака используем фильтр overlay, вместе с координатами его расположени€ на видео.

Ќапример, вотермарк размером 100*100 мы хотим расположить в центре видео с размерами 1280?720. ѕолучим по горизонтали x = (1280 - 100) / 2 = 590 и по вертикали y = (720 - 100) / 2 = 310. ѕоэтому значение будет overlay=590:310. Ќо удобнее использовать формулу overlay=(main_w-overlay_w)/2:(main_h-overlay_h)/2, где main_w и main_h - высота и ширина видео, а overlay_w и overlay_h - вод€ного знака. ѕолучим команду:

ffmpeg -i source_video.mp4 -i watermark.png \
-filter_complex "overlay=(main_w-overlay_w)/2:(main_h-overlay_h)/2" \
-codec:a copy video_protected.mp4	

«авершение

¬ этом руководстве мы рассмотрели установку, базовое использование, расширенное использование и основы фильтров ffmpeg.

ћы надеемс€, что это может быть полезно дл€ всех, кто хочет попробовать ffmpeg, дл€ кого-то, кто хочет использовать ffmpeg дл€ нескольких задач, или даже просто дл€ того, кто хочет больше узнать о широких возможност€х этой удивительной утилиты.