PowerShell: Сжатие видео при помощи FFmpeg
Когда то в далёкой далёкой галактике… Ко мне на работе обратились с просьбой как то уменьшить видео, записанное на камеру в формате .mov
. Естественно, я воспользовался библиотекой #FFmpeg. Но скрипт автоматизации решил написать только сейчас…
Скрипт прост как лапоть. Состоит из небольшого количества вводных параметров, большинство из которых изменять не требуется. Предназначен скрипт для быстрого пакетного конвертирования файлов видео из одного формата в другой, в основном, с целью уменьшения размера. Скрипт не предназначен для сложного редактирования видео!
Параметры
-F
-Files
- массив входящих файлов.-CV
-vCodec
- видео кодек, используемый для конвертации. По умолчанию:libx265
. Поддерживаемые кодеки:'libx264'
- кодек “H.264”.'libx265'
- кодек “H.265”.'libvpx-vp9'
- кодек “VP9” (“WebM”).'libaom-av1'
- кодек “AV1”.
-CA
-aCodec
- аудио кодек, используемый для конвертации. По умолчанию:copy
. Поддерживаемые кодеки:'libfdk_aac'
- кодек “Fraunhofer FDK AAC”.'aac'
- кодек “FFmpeg AAC”.'libmp3lame'
- кодек “FFmpeg MP3”.
-R
-Framerate
- частота кадров выходящего файла (FPS). Сжатие кадров с учётом движения, где сцены движения кодируются с меньшим качеством, чем статичные сцены, что субъективно приводит к восприятию, как качественного, ибо визуально человек различает больше деталей в неподвижных объектах, чем в движущихся. Если параметр не указан, то значение берётся из входящего файла.-C
-CRF
- постоянный коэффициент потока (Constant Rate Factor). Это режим кодирования для кодеков “H.264” и “H.265” с постоянным воспринимаемым качеством, осуществляемый с помощью настройки качества (и управления скоростью). Если параметр не указан, то значение берётся по умолчанию, обычно это28
при кодекеlibx265
и23
приlibx264
.-P
-Preset
- пресеты. Это набор параметров, которые обеспечивают определённую скорость кодирования с степень сжатия. У каждого кодека видео свой набор пресетов. Нужно смотреть документацию.-EXT
-Extension
- расширение выходящих файлов.
Примеры
Конвертировать файлы file_01.mov
, file_02.mov
и file_03.mov
в формат mp4
:
Пакетная конвертация всех файлов с расширением .mov
в формат mp4
:
Алгоритм работы
Скрипт предназначен для быстрого пакетного преобразования файлов видео из одного формата в другой.
Для работы скрипта необходим файл ffmpeg.exe
, архив которого можно скачать с сайта gyan.dev, распаковать и разместить рядом с файлом скрипта или в любую дочернюю директорию. Скрипт сам найдёт файл ffmpeg.exe
и начнёт его использовать.
Скрипт
2023-10-23
- Откорректирован скрипт
ffmpeg.video.compress.ps1
.- Исправлены ошибки.
- Проведена оптимизация.
- Переделаны параметры.
2023-11-19
- Удаление скрипта
ffmpeg.video.compress.ps1
. - Добавление модуля
PowerShell FFmpeg
.