Премиальное программное обеспечение и практические уроки
Как установить на CentOS 8 / RHEL 8 ЛинуксУстановить в системуFFmpegFFmpeg — это бесплатная и открытая мультимедийная платформа для воспроизведения, кодирования, декодирования, потоковой передачи, перекодирования, мультиплексирования, демультиплексирования и фильтрации мультимедийных файлов в различных форматах, включая аудио и видео MPEG1, MPEG4, h263, ac3, asf, avi, real, mjpeg и Flash.
FFmpeg — кроссплатформенное приложение, работающее в Linux, macOS, Windows, BSD, Solaris и других системах в самых разных средах сборки, конфигурациях и архитектурах. Для работы большинства медиаплееров, доступных для Linux, а также загрузчиков и конвертеров аудио/видео (например, youtube-dl), требуется FFmpeg.
Инструменты FFmpeg
Вот основные строительные блоки FFmpeg:
ffmpeg — инструмент командной строки для преобразования мультимедийных файлов между форматами
ffplay – Простой медиаплеер на основе библиотек SDL и FFmpeg
ffprobe – простой анализатор потока мультимедиа
FFmpeg также содержит библиотеки разработчика – libavutil, libavcodec, libavformat, libavdevice, libavfilter, libswscale и libswresample.
На следующей диаграмме описывается процесс перекодировки каждого выходного сигнала:
Как установить FFmpeg на CentOS 8 / RHEL 8
Перед установкой FFmpeg на CentOS 8 / RHEL 8 Linux убедитесь, что ваша системная среда полностью настроена.
Установить репозиторий RPMfusion Yum
Репозиторий RPM Fusion был создан для предоставления программного обеспечения, отсутствующего в дистрибутивах на базе Fedora и Red Hat. Приложения, доступные в этом репозитории, представлены в виде предварительно скомпилированных RPM-файлов. В этом руководстве мы будем использовать репозиторий RPMfusion для установки FFmpeg в CentOS 8 / RHEL 8.
Перед установкой репозитория RPM Fusion вам необходимо установить репозиторий EPEL в вашей системе.
sudo dnf -y install https://download.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm sudo dnf localinstall --nogpgcheck https://download1.rpmfusion.org/free/el/rpmfusion-free-release-8.noarch.rpm sudo dnf install --nogpgcheck https://download1.rpmfusion.org/nonfree/el/rpmfusion-nonfree-release-8.noarch.rpm
Установка FFmpeg на CentOS 8 / RHEL 8 Linux
После добавления репозитория EPEL и RPM Fusion выполните следующие команды в терминале, чтобы установить FFmpeg в системе CentOS 8 / RHEL 8 Linux.
sudo dnf install http://rpmfind.net/linux/epel/7/x86_64/Packages/s/SDL2-2.0.10-1.el7.x86_64.rpm sudo dnf install ffmpeg sudo dnf -y install ffmpeg-devel
Используйте следующую команду для проверки установленной версии FFmpeg в вашей системе RHEL/CentOS.
rpm -qi ffmpeg ffmpeg -version
Заказ
1: Запись видео:
-f: Указывает, что данные из avfoundation нужно собирать с помощью mac.
-i: вход, поток ввода, следующая цифра 1 — номер устройства, указывающий экран (запись экрана)
i обрабатывает входной поток).-r: задаёт частоту кадров. Как правило, 25 кадров обеспечивают более плавную картинку, а 15 кадров едва достаточно.
out.yuv: Собранные данные сохраняются в формате yuv, который представляет собой необработанный формат данных и имеет относительно большой размер.
ffmpeg -f avfoundation -i 1 -r 30 out.yuv
Воспроизвести видео:
-s указывает разрешение
-pix_fmt указывает исходный формат видео
ffplay -s 2560*1600 -pix_fmt uyvy422
Собирайте аудио
Число перед двоеточием обозначает видеоустройство, а число после двоеточия — аудиоустройство.
ffmpeg -f avfoundation -i :1 out.wav
Воспроизвести аудио
Поскольку это форматированные аудиоданные, вы можете просто воспроизвести их напрямую.
ffplay out.wav
2: Разложение и повторное использование
Используется для изменения формата (формата упаковки) мультимедийных данных.
Демультиплексирование — по сути разделение аудио- и видеоданных.
Мультиплексирование — переупаковка аудио- и видеоданных.
Конвертировать аудио и видео форматы
-vcodec демультиплексирование видео
-acodec аудио демультиплексирование
копировать означает не изменять формат кодирования после демультиплексирования, полностью копировать
ffmpeg -i test.mp4 -vcodec copy -acodec copy out.flv
Извлечь видеопоток
-an означает отсутствие аудиопотока
ffmpeg -i test.mp4 -an -vcodec copy out.h264
Извлечь аудиопоток
ffmpeg -i test.mp4 -acodec copy -vn out.h264
3: Обработка необработанных данных
Извлечение необработанных видеоданных
-c:v декодирует видео, используется кодек rawvideo
-pix_fmt Каждый кадр изображения кодируется как yuv 4:2:0
ffmpeg -i input.mp4 -an -c:v rawvideo -pix_fmt yuv420p out.yuv
Воспроизвести исходные данные видео
Извлечение необработанных аудиоданных
-ar означает чтение аудио, частота дискретизации аудио составляет 44100
-ac означает аудиоканал, ac2 означает двухканальный
-f Формат извлеченных аудиоданных PCM. s16le s означает знаковый, 16 бит, а le-little end означает прямой порядок байтов.
ffmpeg -i out.mp4 -vn -ar 44100 ac 2 -f s16le out.pcm
Воспроизведение необработанных аудиоданных
ffplay -ar 44100 -ac 2 -f s16le out.pcm
4: Команда фильтра
-vf указывает фильтр
crop, имя фильтра, за = следует параметр, in_w означает, что ширина уменьшается на 200, in_h означает, что высота уменьшается на 200
-c:v указывает используемый кодек, как упоминалось ранее
-c:a копия не обрабатывает аудио
ffmpeg -i test.mov -vf crop=in_w-200:in_h-200 -c:v libx264 -c:a copy out.mp4
5: команды кадрирования и слияния ffmpeg
Обрезать:
-ss момент времени обрезки
-t Продолжительность обрезки, в секундах
ffmpeg -i вх.mp4 -ss 00:00:00 -t 10 вых.ts
слияние:
-f concat означает объединение следующих файлов
-i указывает входной файл. inputs.txt — это список файлов, в котором указано видео, которое нужно объединить.
выход out.flv
ffmpeg -f concat -i inputs.txt out.flv
Среди них формат файла inputs.txt:
файл «1.mp4» файл «2.mp4»
Добавление копии будет использовать текущий метод кодирования и не будет выполнять процесс декодирования, что быстрее:
ffmpeg -f concat -i files.txt -c copy output.mp4
6: Команда преобразования изображений и видео
Видео в изображение
-r 1 означает передачу одного изображения в секунду
-f задает формат выходного файла, здесь image2
image-%3d.jpeg 表示图片名,%3d表示图片编号由3个数字组成。
ffmpeg -i in.flv -r 1 -f image2 image-%3.jpeg
Конвертировать изображение в видео
ffmpeg -i image-%3d.jpeg out.mp4
7: Прямая трансляция push/pull
Прямая трансляция
#-c аудио- и видеокодек, -a — аудиокодек, -v — видеокодек #-f определяет формат
#-re означает, что частота кадров синхронизирована с реальной частотой кадров ffmpeg -re -i out.mp4 -c copy -f flv rtmp://server/live/streamName
Прямая трансляция
ffmpeg -i rtmp://server/live.streamName -c copy dump.flv
Для получения более подробной информации о методах работы обратитесь к справке. Или просмотритеОфициальная документация FFmpeg
ffmpeg --help
Итак, FFmpeg успешно установлен!