Подготовка к работе
Для работы скриптов необходимо наличие утилит FFmpeg и FFprobe в вашей системе.
- Скачайте архив сборки full (в сборке essentials нет кодека
libsvtav1):
скачать FFmpeg (сборка full) - Извлеките файлы
ffmpeg.exeиffprobe.exe(они находятся в папкеbinвнутри архива). - Переместите оба файла в системную папку
C:\Windows(потребуются права администратора).
Это позволит запускать процесс транскодирования простым перетаскиванием видеофайлов на ваш .bat файл из любого места на компьютере.
Инструкция по автоматизации транскодирования видео в формат AV1
Ниже представлен программный код пакетного файла (.bat) для операционных систем Windows, предназначенный для автоматизированной обработки видеофайлов с использованием библиотеки FFmpeg. Данный скрипт реализует последовательное сжатие видео в высокоэффективный формат AV1 с сохранением оригинальных параметров аудио в кодеке Opus.
Данная команда транскодирования выполняется силами вашего процессора (CPU). Кодек
libsvtav1эффективно распределяет нагрузку на все доступные ядра и потоки. Чем современнее и многопоточнее ваш процессор, тем быстрее завершится обработка. Использование CPU вместо видеокарты в данном случае оправдано максимально возможным качеством при минимальном весе выходного файла.
Исходный код скрипта
Cохранить в кодировке UTF-8 (без BOM).
@echo off
chcp 65001 >nul
:loop
if "%~1"=="" goto end
echo Обработка файла: "%~nx1"
ffmpeg -y -i "%~1" -c:v libsvtav1 -preset 5 -crf 28 -pix_fmt yuv420p10le -svtav1-params tune=0 -c:a libopus -b:a 128k "%~dpn1.mp4.mp4"
shift
goto loop
:end
echo Всё завершено!
pause
Техническое описание параметров FFmpeg в скрипте
-preset 5/-crf 28– отличное визуальное качество при малом весе.-pix_fmt yuv420p10le– 10 бит, убирает бандинг на градиентах.-svtav1-params tune=0– оптимизация визуальной детализации.-c:a libopus -b:a 128k– современный чистый звук при малом битрейте."%~dpn1.mp4.mp4"– суффикс для быстрого поиска готовых файлов.
Рекомендации по выбору параметров:
В представленном выше коде используются настройки для получения максимального качества. Если вы хотите адаптировать скрипт под своё железо или задачи, обратите внимание на следующие параметры:
- Для ускорения процесса (баланс скорости и качества):
Замените-preset 5на-preset 6. Это значительно увеличит скорость кодирования (в 2-3 раза) при минимальной потере в детализации. Этот режим рекомендуется для большинства современных процессоров. - Для уменьшения размера файла (экономия места):
Если итоговый файл получается слишком тяжёлым, измените значение-crf 28на-crf 35или-crf 40. Чем выше это число, тем сильнее сжатие и меньше размер файла. - Особенности именования:
Скрипт сохраняет готовое видео с двойным расширением.mp4.mp4. Это авторское решение для быстрого визуального поиска обработанных файлов. Если вам это не требуется, удалите лишний суффикс в конце команды.
Универсальный вариант скрипта (баланс скорости и сжатия)
Если ваш процессор загружен на 100%, а время кодирования исчисляется десятками часов, или же итоговый файл получается слишком тяжёлым, используйте данный вариант настроек. Он оптимизирован для быстрой работы на большинстве современных ПК и ноутбуков:
Cохранить в кодировке UTF-8 (без BOM).
@echo off
chcp 65001 >nul
:loop
if "%~1"=="" goto end
echo Обработка файла: "%~nx1"
ffmpeg -y -i "%~1" -c:v libsvtav1 -preset 6 -crf 35 -pix_fmt yuv420p10le -svtav1-params tune=0 -c:a libopus -b:a 128k "%~dpn1_av1.mp4"
shift
goto loop
:end
echo Всё завершено!
pause
Основные отличия этого варианта:
-preset 6– ускоряет сжатие в 2–3 раза относительно 5-го пресета.-crf 35– повышенное сжатие для значительной экономии места.
Вариант для точного сжатия файла до 360 МБ (двухпроходный)
Если вам требуется сжать видео строго под конкретный лимит (например, 360 МБ) с сохранением максимального качества, используйте этот умный скрипт. Он автоматически запрашивает длительность видео, вычисляет идеальный битрейт за вычетом аудиодорожки и запускает двухпроходное кодирование.
Сохранить в кодировке UTF-8 (без BOM).
-pass 1и-pass 2– двухпроходное кодирование. На первом этапе (проходе) FFmpeg анализирует весь видеоряд, оценивает динамику сцен и записывает служебный лог-файл (без вывода звука). На втором этапе кодек распределяет доступный битрейт максимально эффективно, чтобы точно уложиться в заданный лимит без потери качества в сложных сценах.NUL– специальный адрес в операционной системе Windows, куда перенаправляется видеопоток на первом проходе. Это исключает создание ненужного промежуточного файла на жёстком диске.-c:a libopus -b:a 128k– кодирование звука в современный кодек Opus с битрейтом 128 кбит/с. Это гарантирует великолепное качество звука при минимальном весе файла, полностью соответствуя технологичности формата AV1.
@echo off
setlocal enabledelayedexpansion
chcp 65001 >nul
if "%~1"=="" (echo Перетащите видео прямо на батник! & pause & exit /b)
set "INPUT=%~1"
cd /d "%~dp1"
set "OUTPUT=%~dpn1_av1_360mb.mp4"
for /f "tokens=1 delims=." %%a in ('ffprobe -v error -show_entries format=duration -of default^=noprint_wrappers^=1:nokey^=1 "%INPUT%"') do set "DUR=%%a"
if "%DUR%"=="" (echo Ошибка определения длительности & pause & exit /b)
set TARGET_MB=350
set /a TOTAL_KBITS=TARGET_MB * 8192, TOTAL_BITRATE=TOTAL_KBITS / DUR, VIDEO_BITRATE=TOTAL_BITRATE - 128
if %VIDEO_BITRATE% lss 50 (echo Видео слишком длинное для лимита 360 МБ & pause & exit /b)
ffmpeg -y -i "%INPUT%" -c:v libsvtav1 -preset 8 -b:v %VIDEO_BITRATE%k -pix_fmt yuv420p10le -svtav1-params tune=0 -pass 1 -an -f null NUL
ffmpeg -y -i "%INPUT%" -c:v libsvtav1 -preset 8 -b:v %VIDEO_BITRATE%k -pix_fmt yuv420p10le -svtav1-params tune=0 -pass 2 -c:a libopus -b:a 128k "%OUTPUT%"
del ffmpeg2pass-0.log 2>nul & del ffmpeg2pass-0.log.mbtree 2>nul
echo Всё готово! Результат сохранён в "%OUTPUT%"
pause
Вариант для точного сжатия до 360 МБ силами видеокарты (NVIDIA GPU)
Если ваша система оснащена современной видеокартой NVIDIA (серии 40 или 50), вы можете использовать аппаратный чип NVENC для молниеносного сжатия видео под конкретный размер. Этот метод идеально подходит для подготовки выпусков шоу или блогов, которые нужно встроить в HTML-страницы или отправить через сервисы с лимитом по весу.
В отличие от процессора, видеокарта выполняет глубокий анализ сцен прямо во время кодирования, что позволяет избежать длинных двухпроходных очередей.
Cохранить в кодировке UTF-8 (без BOM).
@echo off
setlocal enabledelayedexpansion
chcp 65001 >nul
if "%~1"=="" (echo Перетащите видео прямо на батник! & pause & exit /b)
set "INPUT=%~1"
cd /d "%~dp1"
set "OUTPUT=%~dpn1_av1_360mb_gpu.mp4"
for /f "tokens=1 delims=." %%a in ('ffprobe -v error -show_entries format=duration -of default^=noprint_wrappers^=1:nokey^=1 "%INPUT%"') do set "DUR=%%a"
if "%DUR%"=="" (echo Ошибка определения длительности & pause & exit /b)
set TARGET_MB=350
set /a TOTAL_KBITS=TARGET_MB * 8192, TOTAL_BITRATE=TOTAL_KBITS / DUR, VIDEO_BITRATE=TOTAL_BITRATE - 128, BUF_SIZE=TOTAL_BITRATE * 2
if %VIDEO_BITRATE% lss 50 (echo Видео слишком длинное для лимита 360 МБ & pause & exit /b)
ffmpeg -y -i "%INPUT%" -c:v av1_nvenc -preset p6 -multipass fullres -rc vbr -b:v %VIDEO_BITRATE%k -maxrate %TOTAL_BITRATE%k -bufsize %BUF_SIZE%k -pix_fmt p010le -c:a libopus -b:a 128k "%OUTPUT%"
echo Всё готово! Результат сохранён в "%OUTPUT%"
pause
-multipass fullres– повторный анализ кадров в полном разрешении.-pix_fmt p010le– аппаратный 10-битный профиль NVIDIA NVENC.
Пакетное транскодирование силами видеокарты (NVIDIA NVENC)
Если вам нужно обработать видео максимально быстро, используйте аппаратное ускорение вашей видеокарты NVIDIA. Современные карты (начиная с 40-й и 50-й серии, как ваша RTX 5060 Ti) поддерживают аппаратное кодирование AV1, что позволяет сжимать видео почти мгновенно.
Сверхбыстрое кодирование AV1 (NVIDIA)
Этот скрипт использует кодек av1_nvenc. Он работает в десятки раз быстрее, чем процессор, при этом выдаёт отличную картинку.
Сохранить в кодировке UTF-8 (без BOM).
@echo off
chcp 65001 >nul
:loop
if "%~1"=="" goto end
echo Обработка через GPU (NVIDIA): "%~nx1"
ffmpeg -y -i "%~1" -c:v av1_nvenc -preset p6 -cq 32 -b:v 0 -pix_fmt p010le -c:a libopus -b:a 128k "%~dpn1_gpu.mp4"
shift
goto loop
:end
echo Всё! Видеокарта справилась без ошибок.
pause
Технические параметры для GPU:
-preset p6– оптимальный баланс скорости и плотности картинки.-cq 32 -b:v 0– режим постоянного качества (Constant Quality) без скрытого ограничения битрейта кодировщиком NVENC.-pix_fmt p010le– аппаратная 10-битная глубина цвета.