Релиз v1.0.0

This commit is contained in:
2026-08-09 11:07:22 +03:00
commit 30d344ad84
6 changed files with 714 additions and 0 deletions
+185
View File
@@ -0,0 +1,185 @@
# Express Video Encoder
BAT-скрипт для Windows для подготовки видео к отправке через мессенджер **Express**. Скрипт перекодирует видео в **AV1** с помощью **FFmpeg / SVT-AV1** и автоматически подбирает видеобитрейт под заданный размер файла.
По умолчанию скрипт старается получить итоговый MP4 размером около **39,5 МБ**.
## Возможности
- кодирование видео в AV1 через `libsvtav1`;
- двухпроходное кодирование;
- автоматический расчет видеобитрейта по длительности ролика;
- целевой размер файла около 39,5 МБ;
- выбор разрешения;
- выбор частоты кадров;
- 10-битный формат `yuv420p10le`;
- AAC-аудио 128 кбит/с, стерео;
- чтение характеристик исходника через FFprobe;
- сохранение пропорций исходного изображения;
- удобный запуск перетаскиванием видео на BAT-файл.
## Требования
Необходима Windows с PowerShell и FFmpeg, содержащим:
- `ffmpeg.exe`;
- `ffprobe.exe`;
- кодировщик `libsvtav1`.
### Скачать FFmpeg для Windows
Готовую полную сборку FFmpeg для Windows можно скачать здесь:
[Скачать FFmpeg Release Full (.7z)](https://www.gyan.dev/ffmpeg/builds/ffmpeg-release-full.7z)
После распаковки архива найдите в папке `bin` файлы:
```text
ffmpeg.exe
ffprobe.exe
```
Их можно скопировать в папку:
```text
express-video-encoder/ffmpeg/
```
Скрипт ищет FFmpeg в следующем порядке:
1. В локальной папке `ffmpeg` внутри репозитория.
2. В системной переменной `PATH`.
Для автономного варианта положите файлы сюда:
```text
express-video-encoder/ffmpeg/ffmpeg.exe
express-video-encoder/ffmpeg/ffprobe.exe
```
Если этих файлов нет, скрипт попробует использовать установленный в системе FFmpeg.
### Проверка SVT-AV1
Откройте PowerShell или CMD и выполните:
```powershell
ffmpeg -encoders | findstr svtav1
```
В списке должен присутствовать `libsvtav1`.
## Пути к файлам
Скрипт поддерживает пути, содержащие пробелы и русские символы. Видео можно хранить, например, в папках вида:
```text
E:\Моя библиотека\Видео\
```
## Совместимость с путями
Для чтения параметров видео скрипт использует временные файлы, поэтому корректно обрабатывает исходные файлы, расположенные в каталогах с пробелами и русскими символами.
## Использование
1. Скачайте или клонируйте репозиторий.
2. Положите `ffmpeg.exe` и `ffprobe.exe` в папку `ffmpeg`.
3. Убедитесь, что используемая сборка FFmpeg поддерживает SVT-AV1.
4. Перетащите нужный видеофайл мышью на `encode-for-express.bat`.
5. Проверьте информацию об исходном видео.
6. Выберите выходное разрешение.
7. Выберите частоту кадров.
8. Подтвердите запуск кодирования.
9. Дождитесь завершения двух проходов.
Готовый MP4 сохраняется в папку `output` внутри проекта:
```text
express-video-encoder/output/
```
Папка создаётся автоматически при первом запуске, если её ещё нет.
Пример имени:
```text
2026-08-09_09-45-12_Express_1920x1080_24fps.mp4
```
## Доступные разрешения
- 1920×1080 — Full HD;
- 1600×900;
- 1536×864;
- 1280×720 — HD;
- произвольная ширина и высота.
При масштабировании пропорции исходного видео сохраняются. Если соотношение сторон отличается от выбранного, недостающее пространство заполняется полями.
## Частота кадров
Можно выбрать:
- 24 FPS;
- 30 FPS;
- исходную частоту кадров;
- произвольное значение.
## Параметры кодирования
По умолчанию:
| Параметр | Значение |
|---|---|
| Видеокодек | AV1 / SVT-AV1 |
| Контейнер | MP4 |
| Pixel format | `yuv420p10le` |
| Целевой размер | ~39,5 МБ |
| Аудиокодек | AAC |
| Аудиобитрейт | 128 кбит/с |
| Аудиоканалы | 2 (стерео) |
| Первый проход | preset 8 |
| Второй проход | preset 3 |
Основные настройки находятся в начале `encode-for-express.bat`:
```bat
set "TARGET_BYTES=39500000"
set "TARGET_MB=39.5"
set "AUDIO_KBPS=128"
set "OVERHEAD_KBPS=20"
set "FIRST_PASS_PRESET=8"
set "SECOND_PASS_PRESET=3"
```
## Как рассчитывается размер
Скрипт получает длительность видео через FFprobe и рассчитывает доступный видеобитрейт с учетом:
- целевого размера файла;
- длительности ролика;
- аудиобитрейта;
- небольшого запаса на контейнер MP4.
Итоговый размер может немного отличаться от 39,5 МБ.
Если рассчитанный видеобитрейт оказывается ниже 300 кбит/с, кодирование не запускается. В таком случае рекомендуется выбрать меньшее разрешение либо увеличить целевой размер.
## Двухпроходное кодирование
Первый проход анализирует видео и создает служебную статистику.
Второй проход выполняет итоговое кодирование AV1 с использованием рассчитанного битрейта. Временные файлы статистики удаляются после завершения.
## Примечания
AV1 обеспечивает высокую эффективность сжатия, но кодирование может занимать значительно больше времени, чем H.264 или H.265.
Скорость особенно зависит от разрешения видео, длительности ролика, процессора и значения `preset`.
## Лицензия
Проект распространяется по лицензии MIT. См. файл `LICENSE`.