Files
express-video-encoder/README.md
T
2026-08-09 11:09:24 +03:00

184 lines
7.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 (.zip)](https://cloud.kolbox.duckdns.org/f/5d6304d9a1804cf78908/?dl=1)
После распаковки архива найдите в папке `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`.