Установка FFmpeg
![]()
Иногда нужно преобразовать формат файла, например, из jpeg в webp. Для этого существует множество способов. В данной статье рассмотрим способ установки инструмента для преобразования форматов мультимедийных файлов прямо на сервере с ОС Linux. FFmpeg — набор свободных библиотек с открытым исходным кодом, которые позволяют записывать, конвертировать и передавать цифровые аудио и видеозаписи в различных форматах. Он включает libavcodec — библиотеку кодирования и декодирования аудио и видео и libavformat — библиотеку мультиплексирования и демультиплексирования в медиаконтейнер.
Установка в Debian/Ubuntu
Рассмотрим установку FFmpeg в ОС Debian и Ubuntu. Данный способ подойдет для Debian 10, Debian 11, Ubuntu 20.04 и Ubuntu 22.04. Для начала возможно потребуется обновить информацию о пакетах в вашей системе:
# apt update
Далее устанавливаем FFmpeg.
# apt install ffmpeg apt-get install ffmpeg
Видим, что система предлагает установить пакет и зависимости, нажимаем Y (или Д). Дожидаемся окончания установки. Если ошибок нет, проверяем, что FFmpeg установлен:
# ffmpeg --version ffmpeg version 4.3.5-0+deb11u1 Copyright (c) 2000-2022 the FFmpeg developers …
Установка в CentOS/AlmaLinux/RockyLinux
CentOS 7
Для установки FFmpeg на CentOS 7 потребуются сторонние репозитории. Для начала включим репозиторий EPEL:
# yum install epel-release
Далее необходимо включить репозиторий Fusion:
# yum localinstall --nogpgcheck https://download1.rpmfusion.org/free/el/rpmfusion-free-release-7.noarch.rpm
И установим FFmpeg со всеми необходимыми пакетами:
# yum install ffmpeg ffmpeg-devel
Подтверждаем установку пакета и всех зависимостей, а также импорта GPG ключей кнопкой Y. Дожидаемся окончания установки и проверяем:
# ffmpeg --version ffmpeg version 3.4.12 Copyright (c) 2000-2022 the FFmpeg developers …
AlmaLinux 8/RockyLinux 8/AlmaLinux 9/RockyLinux 9
В современных rpm-based ОС используем пакетный менеджер dnf. Для начала, также, как и в CentOS 7, подключаем репозиторий EPEL и необходимый для дальнейшей работы пакет dnf-utils:
# dnf -y install epel-release dnf-utils
Включаем репозиторий PowerTools:
# dnf config-manager --set-enabled powertools
И устанавливаем FFmpeg:
# dnf install ffmpeg
# fmpeg --version ffmpeg version 5.1.2 Copyright (c) 2000-2022 the FFmpeg developers …
В AlmaLinux 9 и RockyLinux 9 могут возникнуть проблемы с вышеуказанными репозиториями, поэтому есть альтернативный способ:
# dnf install --nogpgcheck https://mirrors.rpmfusion.org/free/el/rpmfusion-free-release-$(rpm -E %rhel).noarch.rpm # dnf update -y # dnf install ffmpeg ffmpeg-devel
# fmpeg --version
Использование FFmpeg
Посмотреть поддерживаемые форматы можно командой:
# ffmpeg -formats
Чтобы посмотреть кодировщики, используйте команду:
# ffmpeg -encoders
Чтобы посмотреть список декодеров, используйте команду:
# ffmpeg -decoders
Используйте man , чтобы более подробно ознакомится с документацией:
# man ffmpeg
Рассмотрим несколько примеров использования FFmpeg. Предварительно перейдите в директорию с файлом с помощью cd /путь_до_файла/ , чтобы не писать в командах полный путь до файла. Используйте флаг i, чтобы получить информацию о медиа файле:
# ffmpeg -i file.mp4
Конвертирование файла из mp4 в современный легковесный формат webm (old_file.mp4 — текущий файл, new_file.webm — новый файл):
# ffmpeg -i old_file.mp4 new_file.webm
База знаний
FirstDedic
Статья давно не обновлялась, поэтому информация могла устареть.
FFmpeg — набор свободных библиотек с открытым исходным кодом, которые позволяют записывать, конвертировать и передавать цифровые аудио и видеозаписи в различных форматах. Он включает libavcodec — библиотеку кодирования и декодирования аудио и видео и libavformat — библиотеку мультиплексирования и демультиплексирования в медиаконтейнер.
Debian
# apt-get install ffmpeg
Установка модуля ffmpeg для PHP:
# apt-get install php5-ffmpeg
После установки нужно перезапустить Apache и проверить наличие подключенного модуля ffmpeg:
# /etc/init.d/apache2 restart
# php -i | grep ffmpeg /etc/php5/cli/conf.d/20-ffmpeg.ini, ffmpeg ffmpeg-php version => 0.6.0-svn ffmpeg-php built on => Apr 6 2012 16:24:10 ffmpeg-php gd support => enabled ffmpeg libavcodec version => Lavc53.35.0 ffmpeg libavformat version => Lavf53.21.0 ffmpeg swscaler version => SwS2.1.0 ffmpeg.allow_persistent => 0 => 0 ffmpeg.show_warnings => 0 => 0
Centos
Установка ffmpeg
Centos 6
Импортируем и устанавливаем нужные репозитории:
# rpm --import https://raw.githubusercontent.com/example42/puppet-yum/master/files/CentOS.6/rpm-gpg/RPM-GPG-KEY.atrpms # rpm -Uvh https://www.mirrorservice.org/sites/dl.atrpms.net/el6.7-x86_64/atrpms/stable/atrpms-repo-6-7.el6.x86_64.rpm
Устраняем ошибки в импортируемых репозиториях
# sed -i 's,http://dl,https://www.mirrorservice.org/sites/dl,' /etc/yum.repos.d/atrpms*.repo
# yum install ffmpeg ffmpeg-compat ffmpeg-compat-devel ffmpeg-devel ffmpeg-libs
Centos 7
Импортируем и устанавливаем нужные репозитории:
# vi /etc/yum.repos.d/atrpms.repo
Приводим к такому ввиду:
#baseurl=http://dl.atrpms.net/el$releasever-$basearch/atrpms/stable baseurl=https://www.mirrorservice.org/sites/dl.atrpms.net/el$releasever-$basearch/atrpms/stable
# yum install ffmpeg ffmpeg-compat ffmpeg-compat-devel ffmpeg-devel ffmpeg-libs
Установка php-ffmpeg
Установите git и скачайте исходные тексты расширения ffmpeg-php
(или же можно просто зайти на https://github.com/tony2001/ffmpeg-php и справа скачать zip-файл архива данного репозитория, после чего распаковать и собирать его) Установите пакет для сборки расширений php
Установите пакет для сборки расширений php
# yum install php-devel gcc
Скопилируйте и установите расширение
# cd ffmpeg-php # phpize # ./configure # make && make install
Отредактируйте файл php.ini:
# vim /etc/php.d/ffmpeg.ini
Добавляем следующую строку:
extension=ffmpeg.so
Проверяем наличие подключенного модуля ffmpeg и перезапускаем apache
# php -i | grep ffmpeg ffmpeg
# /etc/init.d/httpd restart
# systemctl restart httpd
Инструкция по установке и работе с программой FFMPEG на Windows
Программа FFMPEG предназначена для конвертирования видео и аудио файлов через специальные команды в командной строке Вашего компьютера/ноутбука, благодаря которым возможно самостоятельно:
1. Изменить формат и качество записи;
2. Изменить разрешение и битрейт для видео и аудио;
3. Нарезать фрагменты записи на отдельные записи;
4. Замедлить и ускорить воспроизведение видео и аудио;
5. Склеить видео и аудио в единый файл;
6. Удалить аудио из видео, а также извлечь аудио из видео.
(Более подробную информацию см. в шаге №5).
С ЧЕГО НАЧАТЬ?
Шаг №1. Скачиваем программу на Windows
Для начала Вам необходимо перейти на официальный сайт разработчиков и скачать файл программы. Ссылка на скачивание программы: https://yadi.sk/d/_ybZxA8VN2pBmQ
Шаг №2. Установка программы
Этот шаг требует особого внимания, так как работа с FFMPEG происходит через командную строку, поэтому разберём по пунктам алгоритм установки FFMPEG:
1. Вы скачали архивный файл и Вам необходимо его открыть;
2. Открываем скачанный архивный файл и находим папку «bin», внутри которой располагается файл-приложение «ffmpeg.exe»;
Примечание! Если у Вас нет архиватора для открытия файла, то можно скачать архиватор WinRar на официальном сайте разработчиков.
Ссылка на скачивание: https://winrar-pro-download.com


3. Извлекаем файл «ffmpeg.exe» в заранее созданную папку «ffmpeg» на корневом диске (как правило, это диск «C»);


4. Далее заходим в проводник (иконка «лупа») и находим «Мой компьютер». Нажимаем на него правой кнопкой мыши и выбираем «свойства», после чего появится следующее окно:


5. Нажимаем на «Дополнительные параметры системы» и заходим в «переменные среды»;

6. Находим в окошке «системные примененные» пункт «Path», нажимаем «изменить»;

7. В появившемся окне нажимаем на кнопку «создать» и указываем путь к файлу ffmpeg. Для этого переходим в папку с ffmpeg и кликаем на строчку, выделенную красным (см. на картинке), после чего нажмите сочетание клавиш Ctrl+C;


8. После того, как нажали клавишу «Создать» (1), вставляем скопированное в строку (2) и нажимаем на «Ок» (3).

Шаг №3. Запускаем программу
1) Если вы используете ОС Windows10, то вам достаточно нажать на значок «поиск»(лупа) и ввести английскими буквами «cmd»:

(Прим. Если же Вы используете более ранние версии Windows (7,8), то Вам нужно зайти в меню «пуск» и строка «поиск» будет в самом низу).
2) Далее, заходим в командную строку и проверяем – работает ли программа. Для этого вводим: ffmpeg, после чего нажимаем кнопку Enter. Если Вы всё сделали правильно, у Вас будет примерно следующий отклик в командной строке:

(Прим. Если же у Вас появляются строки красного цвета, то вероятно – Вы сделали что-то не так. Попробуйте повторить алгоритм по новой).
Шаг №4. Используемые файлы
Для начала работы с видео-файлом необходимо, чтобы файл находился в директории доступных дисков. Например: имеется видео-файл «Testovii File.mp4». Я расположил его прямо на диск D.

Таким же образом разместите остальные файлы, с которыми вы собираетесь работать в ffmpeg.
Либо, если не хотите перетаскивать файл, вам нужно будет скопировать путь к файлу(об этом позже).
(Прим. Рекомендуется использовать английские буквы в названии файлов, с которыми собираетесь работать)
Теперь с файлами можно работать.
Запускаем командную строку. Как правило, по умолчанию в командной строке указан путь к корневой папке, например:

Чтобы начать обрабатывать файл, необходимо указать тот диск, где расположен нужный файл. В нашем случае, это Диск D. Для смены диска, в строке прописываем команду: D:
После чего нажимаем Enter и видим, что теперь у нас отображается Диск D:


Теперь мы можем начать работать с файлами. Любая команда начинается со слова ffmpeg в строке:

Далее будет представлен ряд простых команд, где input.mp4 – название исходного видео-файла; input.mp3 – название исходного аудио-файла; output.format – название полученного файла; а ключ «–i» -это то, что необходимо прописывать перед обрабатываемым файлом (input.mp4/input.mp3).
Шаг №5. Основные команды
1) Для того, чтобы перевести видео в другой видеоформат:
ffmpeg –i Z\input.avi output.mp4
(Прим. – Z\ — путь к файлу input.avi, пример: выбираем нужный файл в папке (1), кликаем на него, затем кликаем на строку с его расположение (2), и копируем правой кнопкой мышки; также следует помнить, что при попытке форматирования из более легкого файла(Mp4) в более тяжелый(avi) – полученный файл будет в более плохом качестве)
2) Для того, чтобы перевести видео в аудио:
ffmpeg –i Z\input.mp4 output.mp3
(Прим. – Если появляется красная строка при нажатии ENTER, то попробуйте поместить input.mp4 в Кавычки – «input.mp4»)
3) Для того, чтобы вырезать фрагмент из видео:
Способ : 1 – обрезать концовку.
ffmpeg -i input.mp4 –t 00:00:00 output.mp4
(Прим. -t 00:00:00 – указывается время продолжительности видео от начала)
Способ : 2 – вырезать кусок из любой точки.
ffmpeg -ss 00:00:00 -i input.mp4 -t 00:00:00 output.mp4
(Прим. –ss 00:00:00 – указывается время начала желаемого куска; -t 00:00:00 – указывается время продолжительности желаемого куска;
Если появляется красная строка, то попробуйте поместить input.mp4 в Кавычки – «input.mp4»)
P.S Применимо как к видео, так и к аудио файлам!
4) Команда для склеивания пустого видео файла и аудио файла:
ffmpeg -i input.mp3 -i input.mp4 output.mp4
(Прим. Если вы используете разные по длительности файлы, то у них вседа будет совпадать начало, а длительность конечного файла будет равна самому длинному исходному файлу, пример:
Аудиофайл.mp3 – длительность 00:05:00 + Видеофайл.mp4 – длительность 00:03:00 = финальный файл.mp4 – длительность 00:05:00)
5) Команда для удаления аудио из видео:
ffmpeg -i input.avi -vcodec copy –an output.avi
6) Команда для ускорения/замедления видео:
ffmpeg –i input.avi -vf setpts=X*PTS output.avi
(Прим. X больше 1 – замедление; X меньше 1 — ускорение)
7) Команда для ускорения/замедления аудио:
Ffmpeg –I input.mp3 -filter:a «atempo=X» –vn output.mp3
(Прим. X значение больше нуля – ускорение; X значение меньше нуля (0.5;0.8) – замедление)
8) Команда для ускорения/замедления файла с аудио и видео:
ffmpeg -i input.mp4 -filter_complex «[0:v]setpts=X*PTS[v];[0:a]atempo=Y[a]» -map «[v]» -map «[a]» output.mp4
(Прим. X больше 1 – замедление; X меньше 1 – ускорение;
Y значение больше нуля – ускорение; Y значение меньше нуля (0.5;0.8) – замедление)
9) Для того, чтобы изменить параметр «качество»:
ffmpeg -i input.avi -q X output.avi
(Прим. X от 23 до 50, где 50 – минимальное качество; данная опция помогает уменьшить размер файла)
ffmpeg -i input.mp4 -crf X output.mp4
10) Для того, чтобы изменить Битрейт:
Для аудио: ffmpeg -i input.mp4 -b:a 128k output.mp4
(Прим. Где 128k– цифра, обозначающая размер битрейта)
Для видео: ffmpeg -i input.mp4″ -b:v 1000k output.mp4
11) Для того, чтобы изменить разрешение видео:
ffmpeg -i input.mp4 -s X output.mp4
(Прим. X – разрешение, например: «-s 800×600»)
Для общего сжатия видео:
13) ffmpeg -i input.mp4 -codec:a copy -vcodec libx264 -preset fast -crf 32 output.mp4
В этой статье были рассмотрены:
— Способ установки ffmpeg для Windows
— Была представлена выжимка из самых распространённых команд, которая позволит использовать программу «ffmpeg» для решения, пусть не самых сложных, но всё-же возникающих задач.
Команды в программе ffmpeg не ограничиваются тем списком, что был представлен в данной статье. Как было сказано выше, в интернете существует более 200 страниц со всевозможными командами, призванными проводить манипуляции с видео\аудио-файлами, которыми, как правило, пользуются продвинутые пользователи.
Мы же предоставили краткий мануал по основным возможностям, и надеемся, что этот материал окажется полезным для наших пользователей!
Пережатие видео в папке при помощи Python скрипта и конвертера FFmpeg

Многие знают что существует пакет утилит FFmpeg, которым можно воспользоваться для пережатия и конвертации видео-файлов. Чтобы сконвертировать файл из одного формата в другой достаточно указать несколько ключей, путь к исходному файлу, путь к выходному и выполнить это в командной строке. Если файлов много, они лежат в подкаталогах и т.п. то можно написать скрипт. Я покажу пример как это можно сделать на python.
Этот пример демонстрирует такие технологии:
- Использование утилиты ffmpeg.exe и ключей для выполнения конвертации в заданный формат.
- Рекурсивный поиск файлов в директории с заданным расширением.
- Выполнение внешней утилиты из python при помощи subprocess.run с передачей параметров.
- Сохранение информации в лог-файл по мере выполнения скрипта для последующего контроля.
import os import subprocess FFMPEGDIR = 'd:\\Program Files\\ffmpeg\\bin\\' # downloaded from ffmpeg.org BASEDIR = 'd:\\VIDEO\\' # Video files def process_file(srcfile : str): ''' Process the source file ''' print(srcfile) dstfile = os.path.splitext(srcfile)[0] + '.mp4' # Result file extension subprocess.run([FFMPEGDIR + 'ffmpeg.exe', '-i', srcfile, # Source video file '-map_metadata', '0:s:0', # Keep metadata '-c:v', 'libx264', '-s', '960x540', # new resolution '-crf', '27', # Video compress level. Higher - smallest bitrate '-ab', '64K' , # Audio bitrate '-y', # Rewrite if exists dstfile]) return dstfile def process_dirs(d): ''' Process all files in directory and subfolders ''' logfile = open('result.txt', 'a') # log for address, dirs, files in os.walk(d): for fname in files: if (os.path.splitext(fname)[1]).lower()=='.mov': dstfile = process_file(os.path.join(address,fname)) logfile.write(f' :.1fMb\n') logfile.close() # log if __name__ == '__main__': process_dirs(BASEDIR)
Командная строка для конвертации каждого файла выглядит так:
ffmpeg.exe -i srcfile.mov -map_metadata 0:s:0 -c:v libx264 -s 960x540 -crf 27 -ab 64K -y dstfile.mp4