Что такое ffmpeg и для чего он нужен
Понимаем FFmpeg
FFmpeg — это набор библиотек для обработки видео и аудио файлов. FFmpeg сконвертирует mov в mp4, наложит водяной знак, склеит несколько видео файлов в один, поменяет разрешение, перекодирует потоковое видео, создаст поток сам. FFmpeg полезен для тех, кто профессионально работает с видео, разрабатывает медиа приложения или просто обрабатывает домашние записи.
FFmpeg не имеет графического интерфейса и управляется командами из консоли. Многие пользователи работают с ним, копируя нужные команды из интернета, не понимая, что значит тот или иной флаг. Научимся осознанно работать с FFmpeg на примере нескольких полезных команд.
Сегодня мы пройдем путь от получения информации о файле до применения нескольких фильтров одновременно, решая задачи, с которыми часто сталкиваешься при работе с видео. Установим ffmpeg и вперед!
Получаем информацию о файле
Конвертируем в mp4
Допустим у нас есть сайт, на котором видео проигрывалось через Flash плеер. Мы хотим поменять его на HTML5 Video. Для этого конвертируем видео файлы на сервере из flv формата в mp4.
По сравнению с предыдущей командой добавилось три поля.
При конвертации задают не только кодеки. Увеличим число настроек:
Вырезаем фрагмент видео
Фильтры. Меняем разрешение
Объединение фильтров. Ускоряем воспроизведение
Мы объединили несколько фильтров в один флагом filter_complex и получили ускоренный в два раза файл. Чтобы разобраться применим фильтры по одиночке.
Добавив filter_complex и применив оба фильтра, мы ускорили файл целиком.
Склеиваем файлы в один
Выполним ту же операцию другим методом:
Такой метод удобен, если у нас много файлов и надо склеить их друг за другом. Он не перекодирует видео и работает быстрее первого метода.
Водяной знак
Последний пример, который мы рассмотрим — это наложение водяного знака. Фильтр overlay принимает на вход координаты расположения водяного знака на итоговом видео.
FFmpeg — мощный инструмент для работы с видео. Решение других задач с его помощью можно посмотреть в статье 19 команд ffmpeg для всех нужд.
Своя видео-платформа — ffmpeg и качество кодирования видео. Part 2
Lenna любит хорошо выглядеть — фотомодель в конце концов. Ходят легенды, что добавление её в заголовок статьи, связанной с обработкой визуальных данных даёт +5 к шансу на плюсы.
Продолжаю раскрывать особенности работы видео сервисов. Сегодня заметки про параметры кодирования и их выбор.
Большинство кодеков предлагают достаточно сбалансированные значения по умолчанию, позволяя получить нормальный результат без долгого подбора параметров. Однако, когда речь идёт о большом архиве видеоматериала, об ограничениях на битрейт, соображениях совместимости с оборудованием клиента и разумном желании сохранить качество оригинала, всё становится интереснее.
К сожалению, волшебной кнопки «скодировать совсем хорошо» не предусмотрено. Как и аналога caniuse для параметров кодирования. Придётся разбираться в особенностях работы кодеков.
Вводная часть: профили
Настроек и параметров у H264 такое количество, что сами разработчики для того, чтобы в них не запутаться, решили сделать список профилей — «хороших» конфигураций для разных целей. Стандартных профилей определили много; дополнительно, устанавливая собственные параметры кодирования, вы, фактически, создаёте собственный профиль, запутывая всех окончательно. Так что, к сожалению, получилось как всегда.
Изначально профили создавались для определения, будет ли проигрываться итоговое видео на нужном типе устройств, однако сейчас какого-то однозначного разделения проигрывателей по типам устройств и профилям нет.
На практике я бы выделил, по уровню ресурсоёмкости декодирования, три группы параметров:
Теперь к отдельным параметрам.
Цветовое пространство
Выбор цветового пространства практически не влияет на эффективность кодирования; этот параметр можно было бы оставить на выбор кодека (он важен при обработке сырых, некодированных данных), если бы не одна особенность: многие плееры весьма специфически обрабатывают информацию о цветовом пространстве, так что у большой части пользователей видео может отображаться с искажениями цвета (в основном зелёного).
Чтобы сохранить цвета для большинства плееров, разные H264 видео нужно кодировать в разных пространствах:
Фреймрейт
Если ваш источник — не стримы игр или экшн-видео, то имеет смысл ограничить верхнее значение фреймрейта 25-30 кадрами — чем их меньше, тем больше остаётся данных для описания отдельного кадра. Уменьшать это значение лучше кратно — так, чтобы пропуск кадров был равномерным, иначе от видео может возникнуть ощущение подтормаживания.
Есть ещё такая вещь, как переменная частота кадров. Работать с VFR неудобно по двум причинам: во-первых, это даёт пики битрейта на участках с высокой частотой, которые мгновенно опустошают буфер; во-вторых, VFR усложняет составление плана конвертации, заставляя использовать Q-параметры (о них я писал в первой статье).
GOP size
Группы изображений — блоки, в пределах которых одни изображения могут ссылаться на данные других. Увеличение размера GOP повышает эффективность кодека в обмен на повышение требований к памяти. Большие значения особо эффективны для файлов с однотипными, циклическими движениями (вы же понимаете, о чём я). Также, при больших значениях могут возникнуть проблемы с перемоткой видео, т.к. нужно будет восстановить больший объём данных.
Название параметра, также, как и единицы измерения, могут отличаться от кодека к кодеку — смотрите документацию.
Slices
Для ускорения декодирования (и кодирования) видео можно разделить на части более низкого разрешения. Идея в том, что обработать четыре видео с разрешением, например, 1280×720 проще, чем одно, но 2560×1440. Имеет смысл при разрешениях выше FHD. Чем больше частей, тем ниже эффективность кодека. Также, использование такого разделения упрощает многопоточную обработку.
Анаморфные пиксели
35%!), либо вообще получить что-то сплющенное по горизонтали.
Контроль битрейта
Есть три основных режима работы кодеков, связанных с битрейтом:
Для онлайн проигрывания (да и для стриминга) хорошо подходит constrained VBR, т.к. он даёт лучшее, чем CBR, качество и позволяет уместить поток в интернет-канал.
Выбор maxrate/minrate зависит от канала клиента, разброс больше 20% лучше не делать.
Многопроходное кодирование
Распределение данных по файлу в VBR-режиме предсказать сложно, кодекам приходится угадывать, что получается не всегда. В многопроходном режиме кодек сперва составляет карту требующегося битрейта, а потом кодирует. Таким способом улучшается качество видео в сложных и динамических сценах (пример. Обратите внимание на количество «муарных» элементов и количество переходов между сценами). Так как при первом проходе кодек только анализирует исходный файл, вопреки распространённому мнению, обработка в таком режиме требует времени больше не в два раза, а только на 10-15%.
Для разных типов исходного материала подготовлено несколько пресетов, подстраивающих некоторые базовые параметры кодирования — такие, как уровни деблокинг-филитра, параметры психовизуальной оптимизации. Использование этих пресетов улучшает восприятие видео и хорошо работает, если вы заранее знаете тип источника, или у вас структурированный набор видео (в случае массовой обработки).
Формат пикселей
Формат и битность сильно влияют на то, как сжимаются и разжимаются файлы, в каком виде теряется качество. Основные параметры, которые описывает пиксельный формат:
Чересстрочность
Чересстрочность придумали для удвоения воспринимаемой частоты кадров минимальными затратами — битрейт и разрешение те же, а частота выше. Однако, при быстром движении становятся заметны зубцы — строки предыдущего кадра. Избавиться от эффекта, не отбрасывая кадры и не уменьшая вертикальное разрешение, можно фильтрами, но они уменьшат чёткость. Если видео будет проигрываться в браузере, чересстрочность лучше отфильтровать при кодировании, т.к. реалтайм-фильтрация на клиенте даст не лучшие визуальные результаты.
Собираем всё вместе
Разумеется, в одной статье всё охватить не получилось, но уверен, этого материала будет достаточно для улучшения качества многих видео.
Читайте документацию и экспериментируйте.
В дополнение к примеру из прошлой статьи, я узнал о ещё одной инсталяции моего кода — клик. Примеры в статье постарался брать с этих сайтов, но не смотря на это:
*Я не имею прямого отношения к авторам упоминаемых сайтов и могу не разделять их взгляды и мнение. Решения о том, кому и как предоставляется доступ к коду я комментировать не могу.
Электрический блогнот
мои заметки на полях
ffmpeg потоковое вещание для чайников
В этой статье я попытаюсь рассказать начинающему пользователю Linux о потоковом вещании в сеть с помощью ffmpeg. На первый взгляд тема простая и все понятно. Вот есть видео, вот ffmpeg его транслирует, пользователи подключаются и начинают смотреть киношку. Как телевышка и телевизоры. Но как только я решил, что-то транслировать то сразу уперся в стену непонимания и недостатка информации. Как транслировать? Куда вещать? Как подготовить медиаконтент для трансляции? Многие руководства в сети начинались со слов «тут все элементарно». Часто вся инструкция сводилась к набору действий: «скачай», «установи», «поправь конфиги», «перезапусти» и вот ты уже вещаешь. Но полной картины для понимания процесса не было.
Устанавливаем ffmpeg
Первым делом скачиваем и устанавливаем ffmpeg. Без него, как сами понимаете, ничего не получится. Как это делается я подробнейше описал в статье ffmpeg для начинающих. А лучше взять и собрать его из исходников, тем самым получив самую свежайшую версию именно для вашего дистрибутива Linux.
Поднимаем nginx
Nginx популярнейший web server в сети Internet. Многие любят его за надежность, масштабируемость и за невысокую требовательность к ресурсам. Nginx будет выступать в роли той самой телевышки о которой я говорил вначале. Именно nginx будет «вещать в эфир», а ffmpeg будет «набрасывать» ему контент для вещания.
Nginx будем собирать из исходников. Но перед этим сначала скачаем plugin RTMP для nginx, который необходим для организации вещания. Делаем клон репо с github:
Затем скачиваем исходники самой свежей версии nginx:
Распаковываем и начинаем собирать по классической схеме:
configure&make&make install
При запуске configure необходимо указать, где находится rtmp module (plugin):
Далее запускаем сборку и установку:
После того, как инсталляция nginx в систему будет завершена, правим файл сервиса (должен иметь следующий вид):
В конфиг nginx добавляем секцию модуля rtmp:
И наконец-то запускаем сам nginx:
Nginx должен сервить порт 1935, проверяем это следующей командой:
Замечание
Nginx может быть запущен, как на отдельном хосте в Internet, так и на том же хосте (например localhost), где будет запущен ffmpeg.
Запускаем потоковое вещание
После того, как ffmpeg и nginx установлены и сконфигурированы, можно начинать транслировать в эфир. Для этого запускаем ffmpeg на вашем локальном компьютере со следующими параметрами:
Трансляция видео
Разберем поподробнее опции, которые используются непосредственно для трансляции.
Трансляция статичной картинки
Для отладки можно запустить трансляцию статичной картинки:
Трансляция изображения с web-камеры
Смотрим трансляцию
Медиа поток, который вещает nginx в эфир можно просматривать с помощью плееров (smplayer, vlc и так далее). Но мы будем использовать ffplay, который входит в пакет FFmpeg.
На следующей картинке показаны все компоненты вместе:
ffmpeg готовящий контент для трансляции;
nginx вещающий в эфир;
клиенты, которые присоединяются к nginx и смотрят «киношку».
Кстати, фото в самом начале статье, где девушка говорит в громкоговоритель, очень наглядно иллюстрирует схему ffmpeg+nginx:
ffmpeg — микрофон в который говорит девушка;
nginx — рупор.
Выводы
В этой статье мы рассмотрели процесс вещания мультимедиа-контента в эфир. Используя бесплатную и свободнораспространяемую программу ffmpeg а так же бесплатный веб сервер nginx вы сможете без труда начать транслировать в сеть. Все что было разобрано в статье было реализовано для Linux CentOS и без труда может быть перенесено на Ubuntu или любой другой дистрибутив.
ИТ База знаний
Полезно
— Онлайн генератор устойчивых паролей
— Онлайн калькулятор подсетей
— Руководство администратора FreePBX на русском языке
— Руководство администратора Cisco UCM/CME на русском языке
— Руководство администратора по Linux/Unix
Навигация
Серверные решения
Телефония
FreePBX и Asterisk
Настройка программных телефонов
Корпоративные сети
Протоколы и стандарты
Руководство по использованию ffmpeg в Linux
Работаем с медиафайлами
В этом подробном руководстве показано, как установить ffmpeg в Ubuntu и других дистрибутивах Linux. Он также демонстрирует некоторые полезные команды ffmpeg для практического использования.
В этом руководстве мы расскажем, как установить ffmpeg, и как использовать его базовые и продвинутые функции.
Установка ffmpeg в Linux
Установка ffmpeg в Ubuntu
Готово! Чтобы проверить установку выполните:
Вы должны увидеть вывод, описывающий вашу конфигурацию ffmpeg, включая версию.
Существует неофициальный PPA, который вы можете использовать для установки последней версии ffmpeg. Просто используйте эти команды:
Установка ffmpeg в дистрибутивах на основе Arch
Чтобы установить ffmpeg в дистрибутивах на основе Arch, используйте следующую команду:
Установка ffmpeg в дистрибутивах на основе Fedora
Чтобы установить ffmpeg в дистрибутивы Linux на основе Fedora, вы можете использовать эту команду:
Установка ffmpeg в CentOS/RHEL
FFmpeg недоступен в репозиториях CentOS 8 по умолчанию. Вы можете собрать инструменты ffmpeg из исходного кода или установить его с помощью утилиты dnf из репозитория Negativo17.
Репозиторий Negativo17 зависит от репозиториев EPEL (Extra Packages for Enterprise Linux) и PowerTools. Для их включения используйте:
После включения этих репозиториев уже можно установить сам ffmpeg:
Установка ffmpeg в Debian
Как использовать ffmpeg: Основы
С установленным ffmpeg перейдем к основным командам, чтобы вы начали использовать этот мощный инструмент.
Основные строительные блоки ffmpeg:
Процесс транскодирования в ffmpeg для может быть описан следующей схемой:
0. Команды ffmpeg
Основная форма команды ffmpeg:
Вы должны иметь в виду, что все параметры файла применяются только к файлу, который следует за ними (и вы должны будете записать их снова для следующего файла).
Вы не должны смешивать входы и выходы: сначала укажите входные файлы, затем укажите выходные файлы.
1. Получить информацию медиа файла
Это работает для аудио и видео файлов:
Как вы можете видеть, команда теперь выводит только информацию, касающуюся указанного вами медиа-файла (кодировщик, потоки и так далее).
2. Конвертировать медиа файлы
Вот некоторые примеры:
Вы даже можете указать больше выходных файлов:
Это преобразует входные файлы во все указанные форматы.
Чтобы увидеть список всех поддерживаемых форматов, используйте:
3. Извлечение аудио из видео
4. Отключение звука в видео
5. Извлечение изображений из видео
Допустим, у вас есть серия изображений (например, слайд-шоу), и вы хотите получить все изображения из этого. Просто введите:
6. Изменение разрешения видео или соотношения сторон
7. Добавить изображение обложки в аудио
Это отличный способ превратить аудио в видео, используя одну фотографию (например, обложку альбома) для аудио. Это очень полезная функция, когда вы хотите загружать аудиофайлы на сайты, на которых не разрешено ничего, кроме видео и изображений (YouTube и Facebook являются примерами таких сайтов).
8. Добавить субтитры к видео
С ffmpeg просто добавить субтитры к видео. Введите следующее:
Конечно, вы можете указать любые кодеки, которые вы хотите (и любые другие дополнительные параметры, связанные с аудио и видео).
9. Сжатие медиа-файлов
Сжатие файлов значительно уменьшает размер файла, экономя вам много места. Это может быть важно для передачи файлов. С ffmpeg есть несколько способов уменьшить размер файла.
Примечание: Слишком большое сжатие файлов заметно ухудшит качество получаемого файла.
CRF от 20 до 30 распространен, но можно выставлять и другие значения.
Снижение частоты кадров (фреймрейта) может работать в некоторых случаях (хотя это может очень легко сделать видео медленным):
-r указывает частоту кадров (в данном случае 24).
Вы также можете попробовать уменьшить разрешение видео (смотри выше как это сделать). Дополнительным советом является сжатие звука, делая его стереофоническим и снижая скорость передачи данных. Например:
10. Обрезать медиа файлы
Как использовать ffmpeg: Расширенное использование
Теперь мы расскажем о чуть более продвинутых функциях, таких как запись экрана, использование устройств и другие.
1. Обрезка медиа-файлов
Чтобы разделить файл на несколько частей, нужно указать несколько разделений (указать время начала, время окончания или продолжительность перед каждым выходным файлом).
Посмотрите на этот пример:
Это можно сделать для любого количества частей. Имейте в виду, что это работает со звуком тоже.
2. Склейка медиа-файлов
ffmpeg также может выполнить противоположный процесс: собрать несколько частей вместе.
Теперь отредактируем его в vim
Здесь введите полные пути ко всем файлам, которые вы хотите присоединить (они будут объединены в том порядке, в котором вы их здесь пишете), по одному на строку. Убедитесь, что они имеют одинаковое расширение (например, mp4). Вот пример:
Сохраните файл, который вы только что отредактировали. Этот метод работает для любых аудио или видео файлов.
Теперь введите следующее:
3. Соедините изображения в видео
Таким образом вы можете создать слайдшоу или что-то подобное.
Если вы воспроизводите этот файл, вы можете подумать, что в слайд-шоу были добавлены только некоторые изображения. На самом деле все ваши фотографии были добавлены, но ffmpeg проходит по ним их как можно быстрее. Это означает 1 кадр на фотографию, ffmpeg по умолчанию работает со скоростью около 23 кадров в секунду.
В нашем примере мы устанавливаем частоту кадров равную 1, что означает, что каждый кадр (что также означает каждое изображение) появляется в течение 1 секунды.
4. Запись экрана
Нажмите q или CTRL + C в любое время, чтобы остановить запись.
Вы можете сделать размер выходного файла полноэкранным, введя следующее для размера (вместо 1920?1080 или любого другого установленного разрешения):
5. Запишите свою веб-камеру
6. Запишите ваше аудио
Linux обрабатывает аудио в основном через ALSA и pulseaudio. ffmpeg может записывать оба, но мы рассмотрим pulseaudio, так как дистрибутивы на основе Debian включают его по умолчанию. Синтаксис немного отличается для двух методов.
В настройках звука у дистрибутива убедитесь, что записывающим устройством по умолчанию является то устройство, которое вы хотите записать.
Вместо записи звука вы можете так же легко добавить аудиофайл в качестве звука поверх для записи экрана или веб-камеры:
Записи в ffmpeg мелкими, поэтому очень маленькая запись может не сохраниться. Мы рекомендуем сделать запись немного дольше и затем обрезать ее (если вам нужно всего несколько секунд), просто чтобы убедиться, что файл действительно будет записан на ваш диск.
Основное использование фильтров в ffmpeg
Фильтры являются невероятно мощной функцией ffmpeg. Вам доступно огромное количество фильтров, что делает ffmpeg полностью способным обрабатывать любые потребности редактирования.
Основная структура для использования фильтра:
Общая форма фильтра:
Различные настройки фильтра и их значения разделены двоеточиями. Вы также можете выполнять математические операции в качестве значений для различных настроек.
Более подробное описание различных констант, используемых в выражениях, и различных настроек можно найти в официальной документации фильтра ffmpeg.
1. Масштабирование видео
Это очень простой фильтр. Единственными настройками являются ширина w и высота h :
Как мы уже упоминали, вы можете использовать математические операции для значений:
2. Обрезка видео
Вот пример, который использует математические выражения в качестве значений:
3. Поворот видео
Вы также можете повернуть видео по часовой стрелке на определенную величину в радианах. Чтобы упростить задачу, вы можете указать значение в градусах и преобразовать его в радианы, умножив это значение на PI/180 :
Первая команда повернет видео по часовой стрелке на 90 градусов. Вторая команда перевернет видео вверх ногами (PI рад = 180 градусов).
4. Преобразование аудиоканала
Это может быть полезно, если вы каким-то образом получаете звук только в правом ухе или что-то подобное. Вы можете сделать звук слышимым из обоих ушей (в данном конкретном случае) следующим образом:
Это мапит правый 1 аудиоканал на левый 0 и правый 1 аудиоканалы (левое число представляет собой вход, правое число представляет собой выход).
5. Увеличение громкости звука
Вы можете умножить громкость звука на любое действительное число. Вам нужно только указать множитель:
Первая команда увеличивает громкость в 1,5 раза. Вторая команда делает звук в 1/4 (0,25) раза тише.
6. Настройка скорости воспроизведения
Первая команда удваивает скорость воспроизведения, а вторая команда замедляет видео до 1/2 скорости.
Первая команда замедляет звук на 1/4 от первоначальной скорости. Вторая команда ускоряет звук в 4 раза (2*2)
Чтобы изменить скорость воспроизведения видео и аудио с помощью одной и той же команды, вам нужно использовать filtergraphs
7. Добавить водяной знак
Завершение
В этом руководстве мы рассмотрели установку, базовое использование, расширенное использование и основы фильтров ffmpeg.
Мы надеемся, что это может быть полезно для всех, кто хочет попробовать ffmpeg, для кого-то, кто хочет использовать ffmpeg для нескольких задач, или даже просто для того, кто хочет больше узнать о широких возможностях этой удивительной утилиты.
FFmpeg: работаем с видео
У многих пользователей Windows и без того полно приложений, чтобы скачивать, устанавливать, активировать ещё одно для работы с видео. Обойдёмся без этих трудностей!
FFmpeg – функциональный видео- и аудио- конвертер. У него нет графического интерфейса, поэтому выполнять операции необходимо из консоли. При этом функционал программы и качество работы её превосходит тот, что показывают привычные конвертеры.
Базовые возможности FFmpeg:
FFmpeg на самом деле прост в использовании и будет полезен как профессионалам, работающим с видео, так и любителям, решившим обработать домашний видеоархив.
Установка FFmpeg.
Разархивируйте содержимое скачанного архива, например в Program Files или Windows или Windows\System32 (или в другую папку, где у вас могут храниться портативные программы).
Чтобы каждый раз не прописывать длинный путь к программе, например: C:\Program Files\ffmpeg\bin\ffmpeg.exe рекомендую добавить её в системную переменную Path, для этого перейдите:
Пуск → Параметры → Система → О программе → Дополнительные параметры системы → Переменные среды
Запустите «Выполнить» нажатием win+R и выполните sysdm.cpl, затем перейдите во вкладку «Дополнительно», а там уже «Переменные среды».
В окне “Переменные среды пользователя” дважды кликните по строке Path, где создайте новую с указанием пути к папке с FFmpeg\bin содержащую ffmpeg.exe.
Переменная среда Path
Теперь для того, чтобы вызвать FFmpeg используйте в консоли (PowerShell или CMD) следующую команду:
Если в консоли появилось сообщение о версии FFmpeg, значит программа работает! Если появляется сообщение: “ffmpeg.exe” не является внутренней или внешней
командой, исполняемой программой или пакетным файлом, то стоит перезагрузить компьютер.
FFmpeg: конвертация видео.
После установки FFmpeg можно заниматься работой с медиа файлами, например, конвертируем видео в консоли.
Эта команда сконвертирует видео из файла input.avi в output.mp4. По умолчанию для файлов mov и mp4 используется кодек H.264. Размер кадра и fps будут взяты из исходного файла.
В примере выше параметры по умолчанию могут отличаться от желаемых вами настроек, поэтому параметры можно задавать явно.
Для примера рассмотрим следующую команду:
FFmpeg: Полезные команды.
Обрезка видео.
Склейка видео.
Для склейки используется оператор concat. После двоеточия ему передаются входные файлы, разделённые вертикальной чертой. Соединяемые файлы обязательно должны быть одного формата (видео и аудио), их параметры должны совпадать.
Конвертация аудио.
Аудио файлы можно конвертировать независимо от видео.
Изменение разрешения и кадрирование.
Однако использование фильтра scale даст более качественный результат.
Для кадрирования изображения предназначен фильтр crop. Его параметры имеют следующий вид crop=w:h:x:y, где w — ширина прямоугольника, который нужно вырезать из исходного видео, h — высота прямоугольника, x и y — x координаты точки начала обрезки.
Команда выше вырежет из кадра прямоугольник шириной 640 и высотой 480 пикселей, начиная с позиции (200,150).
Соотношение сторон.
Добавление, извлечение и удаление и аудио.
Сохранить аудиодорожку из видеофайла.
Если требуется сохранить дорожку в определённый формат, укажите параметры явно:
В примере ниже показано, как добавить несколько звуковых дорожек в видеофайл (мультиплексация).
Так как в примере выше только один выходной файл, 0 перед двоеточием можно опустить.
Изменение громкости.
Для изменения громкости в FFmpeg существует аудиофильтр volume.
Следующая команда в половину уменьшит громкость:
Аналогично, громкость можно увеличить (в примере ниже в полтора раза):
Возможности FFmpeg на этом не ограничиваются, поэтому подробнее можно ознакомиться с командами и фильтрами на официальном сайте.