Пакетное сжатие видео через ffmpeg. Конвертируем h264 в h265 бесплатно без регистрации и смс

Предисловие

H.265 или HEVC способен весить меньше на 30%, чем h264 и уже давно настало время, когда h265 поддерживается на всех актуальных устройствах — а значит можно конвертировать имеющиеся видео в h265 и съэкономить место. И поможет в этом ffmpeg и мой небольшой powershell script. Инструкция сделана максимально простой - с минимумом технических подробностей.

Суть

  1. Создаём новую папку, называем её "videoconv". В ней создаём папки "ffmpeg", "input", "output"
Пакетное сжатие видео через ffmpeg. Конвертируем h264 в h265 бесплатно без регистрации и смс

2. Скачиваем собственно ffmpeg

Лучше скачивать именно zip, поскольку он открывается обычным дедовским Проводником
Лучше скачивать именно zip, поскольку он открывается обычным дедовским Проводником

3. Копируем из скачанного архива "ffmpeg.exe" в нашу папку "ffmpeg"

Отсюда
Отсюда
Вотсюда
Вотсюда

4. Открываем блокнот и копируем туда

$currentPath = $MyInvocation.MyCommand.Path | split-path -parent $inputFolder = $currentPath + '/input/' $outputFolder = $currentPath + '/output/' $ffmpeg = $currentPath + '/ffmpeg/ffmpeg.exe' foreach($file in Get-ChildItem -Path $inputFolder) { Write-Host "------------Started next------------" $arg = '-i "' + $file.FullName + '" -c:v libx265 -c:a copy "' + $outputFolder + $file.Name +'"' Invoke-Expression "& $ffmpeg $arg" } Read-Host -Prompt "Press any key to exit...:"

Описание скрипта: скрипт берёт все файлы из папки "input" и отправляет их в программу ffmpeg, а затем в папку "output". Битрейт для видео ffmpeg выберет сам, звук скопируется без изменений.

5. Сохраняем текстовый файл с именем, например, "wildvc.ps1". Важно чтобы расширение файла было ".ps1"

Должно получиться так
Должно получиться так

6. Теперь кладите свои видеофайлы в папку "input"

Можно класть и один файл, и неколько файлов
Можно класть и один файл, и неколько файлов

7. Теперь жмите правую кнопку мыши на "wildvc.ps1", а затем левую кнопку мыши на "Выполнить с помощью PowerShell", затем "открыть"

Пакетное сжатие видео через ffmpeg. Конвертируем h264 в h265 бесплатно без регистрации и смс
Пакетное сжатие видео через ffmpeg. Конвертируем h264 в h265 бесплатно без регистрации и смс

8. Откроется синенькое окно "Windows PowerShell", вам надо просто дождаться надписи "Press any key to exit...:". Если в окне появились красные надписи - значит вы что-то сделали не по инструкции или ваши файлы с видео не подходят

Пакетное сжатие видео через ffmpeg. Конвертируем h264 в h265 бесплатно без регистрации и смс

9. Теперь в папке "output" лежат ваши сконвертированные видео

Рекомендую очищать эту папку перед каждым запуском скрипта
Рекомендую очищать эту папку перед каждым запуском скрипта

Послесловие

Теперь вы можете повторять пункты 6-9 сколько угодно раз и получать меньшее в размере видео.

Как говорилось в начале: сам по себе h265 или HEVC способен весить меньше на 30%, чем h264. Но ffmpeg автоматически ещё уменьшает битрейт так чтобы ещё съэкономить места, но не сильно зашакалить картинку.

На показанных выше скринкастах из игр размер уменьшился более, чем в 2 раза

Пакетное сжатие видео через ffmpeg. Конвертируем h264 в h265 бесплатно без регистрации и смс

На скринкастах более статичного содержимого, например, видеоуроков - ffmpeg сжимал размер в 9-10 раз: автоматически выставляя подходящий битрейт

В следующих статьях возможно расскажу: как настраивать качество, а так же как нехитрым способом сильно ускорить конвертацию

2828
82 комментария

Сегодня я бы рекомендовал использовать AV1 вместо H.265. H.265 файлы, например, не проиграются в браузере, если загрузить их на какое-нибудь онлайн хранилище (где нет отдельного плеера), AV1 же - проиграется, так как он royalty-free и его поддержку уже завезли везде где надо.

Если судить по настройкам по умочанию которые выбираются FFmpeg согласно конфигу ОП'а, примерным аналогом и по размеру файла, и по скорости энкодирования на SVT-AV1 будут эти параметры, давая при этом более качественный результат:

-c:v libsvtav1 -preset 8 -crf 45 -svtav1-params tune=0

Но это, как собственно и то, что выставляет FFmpeg по умолчанию для libx265, слишком грубые настройки. Я бы рекомендовал -crf на 32 для 1080р контента и -crf 28 для 720р контента, либо же оставить где-то на crf 30-35 для универсального конфига.

Пресет тоже влияет. Выше preset 6 брать не стоит, возможно, выше preset 7 в самой последней версии SVT-AV1, где представили серьезные оптимизации пресетов. Но если preset medium для libx265 (т.е. то, что использует FFmpeg по умолчанию в конфиге ОП'а) устраивает, то, закрывая монитор рукой, напишу, что preset 8 тоже должен устроить.

Скрин для сравнения. Для доступа к самой последней версии SVT-AV1, качать надо последние git билды FFmpeg'a:
https://www.gyan.dev/ffmpeg/builds/ (Windows)
https://github.com/BtbN/FFmpeg-Builds/releases (Linux / Windows)

P.S. единственный момент, который следует держать в уме - AV1 кушает процессор, а аппаратные декодеры AV1 еще не везде завезли. Мой самый слабый девайс, ноут на Intel N4000, тянет 720p@60fps, а вот на 1080@30fps уже статтерит.

7
Ответить

Уже давно h265 проигрывается в браузере

1
Ответить

жаль что всё немного портит необходимость иметь RTX 40xx в системе для аппаратной обработки этого кодека.

Ответить

crf/cq можно вообще спокойно в 0 ставить, он там сам разберётся какое наиболее оптимальное значение выбрать. в большинстве случаев по моему опыту - выбирает он гораздо рациональнее чем я сам своими ручными подвотками. а личные рекомендации по цифрам тут вообще нелепо оставлять, всё сильно зависит от конкретного обрабатываемого куска видео.

Ответить

Хотел бы добавить что если хочется побыстрее, то можно другие кодеки использовать, чтобы получилось аппаратное ускорение. Только там проблемы могут быть с качеством, надо правильно настройки выставлять

Ответить

зумеры открывают для себя волшебный мир опенсорса

3
Ответить

зумеры на сайтиках сжимают или через мессенджеры(9(

1
Ответить