Релиз v1.0.0
This commit is contained in:
@@ -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`.
|
||||
Reference in New Issue
Block a user