From 7ed159ccb0f23f87f7982a82426bc4b10769b2e0 Mon Sep 17 00:00:00 2001 From: "S.Gromov" Date: Tue, 20 Jan 2026 00:56:01 +0300 Subject: [PATCH] =?UTF-8?q?chore:=20=D0=BE=D0=B1=D0=BD=D0=BE=D0=B2=D0=B8?= =?UTF-8?q?=D1=82=D1=8C=20=D0=BC=D0=B5=D1=82=D0=B0=D0=B4=D0=B0=D0=BD=D0=BD?= =?UTF-8?q?=D1=8B=D0=B5=20=D0=BF=D0=B0=D0=BA=D0=B5=D1=82=D0=B0=20=D0=B8=20?= =?UTF-8?q?=D0=B4=D0=BE=D0=BA=D1=83=D0=BC=D0=B5=D0=BD=D1=82=D0=B0=D1=86?= =?UTF-8?q?=D0=B8=D1=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 112 ++++++++++++++++++++++---------------------- README_RU.md | 113 +++++++++++++++++++++++++++++++++++++++++++++ docs/PUBLISHING.md | 19 ++++++-- package.json | 4 +- 4 files changed, 188 insertions(+), 60 deletions(-) create mode 100644 README_RU.md diff --git a/README.md b/README.md index 67fd761..b675ab4 100644 --- a/README.md +++ b/README.md @@ -1,26 +1,28 @@ -# DASH Video Converter 🎬 +# Create VOD 🎬 -CLI инструмент для конвертации видео в форматы DASH и HLS с поддержкой аппаратного ускорения (NVENC / Intel QSV / AMD AMF / VAAPI), адаптивным стримингом и автоматической генерацией превью. +🇷🇺 Russian README: https://gromlab.ru/vod/create-vod/src/branch/master/README_RU.md -**Возможности:** -- ⚡ Аппаратное ускорение: NVENC / Intel QSV / AMD AMF / VAAPI (автовыбор по приоритету) -- 🎯 Форматы: DASH и HLS (оба из одних сегментов) -- 📊 Профили качества: множественные битрейты и FPS, авто или кастом -- 🖼️ Превью: thumbnail спрайты + VTT, постер с первого кадра -- ⏱️ Прогресс: CLI прогресс-бары по профилям и общему этапу +CLI tool to convert videos to DASH and HLS with hardware acceleration (NVENC / Intel QSV / AMD AMF / VAAPI), adaptive streaming, and automatic thumbnails/poster. -## Быстрый старт +**Features:** +- ⚡ Hardware acceleration: NVENC / Intel QSV / AMD AMF / VAAPI (auto priority) +- 🎯 Formats: DASH and HLS (shared segments) +- 📊 Quality profiles: multiple bitrates/FPS (auto or custom) +- 🖼️ Preview: thumbnail sprite + VTT, poster from the first frame +- ⏱️ Progress: per-profile and overall CLI progress bars + +## Quick Start ```bash -# Использование через npx (без установки) +# Run via npx (no install) npx @gromlab/create-vod video.mp4 -# Или глобальная установка +# Or install globally npm install -g @gromlab/create-vod create-vod video.mp4 ``` -**Системные требования:** +**System requirements:** ```bash # Arch Linux sudo pacman -S ffmpeg gpac @@ -32,80 +34,80 @@ sudo apt install ffmpeg gpac brew install ffmpeg gpac ``` -**Результат:** В текущей директории будет создана папка `video/` с сегментами в папках `{profile}-{codec}/`, манифестами DASH и HLS в корне, постером и превью спрайтами. +**Output:** A folder `video/` in the current directory with segments under `{profile}-{codec}/`, DASH/HLS manifests in the root, poster, and thumbnail sprite/VTT. -## Параметры CLI +## CLI Usage ```bash create-vod [output-dir] [-r resolutions] [-c codec] [-f format] [-p poster-timecode] ``` -### Основные параметры +### Main arguments -| Параметр | Описание | По умолчанию | Обязательный | -|----------|----------|--------------|--------------| -| `input-video` | Путь к входному видео файлу | - | ✅ | -| `output-dir` | Директория для выходных файлов | `.` (текущая папка) | ❌ | +| Argument | Description | Default | Required | +|---------------|------------------------------|---------|----------| +| `input-video` | Path to input video file | - | ✅ | +| `output-dir` | Output directory | `.` | ❌ | -### Опциональные ключи +### Options -| Ключ | Описание | Формат | Пример | -|------|----------|--------|--------| -| `-r, --resolutions` | Выбор профилей качества | `360`, `720@60`, `1080-60` | `-r 720,1080,1440@60` | -| `-c, --codec` | Видео кодек | `h264`, `av1`, `dual` | `-c dual` (по умолчанию) | -| `-f, --format` | Формат стриминга | `dash`, `hls`, `both` | `-f both` (по умолчанию) | -| `-p, --poster` | Таймкод для постера | `HH:MM:SS` или секунды | `-p 00:00:05` или `-p 10` | -| `--accel` | Аппаратный ускоритель | `auto`, `nvenc`, `qsv`, `amf`, `cpu` | `--accel nvenc` | +| Option | Description | Format | Example | +|--------|----------------------------|----------------------------|---------------------------------| +| `-r, --resolutions` | Quality profiles | `360`, `720@60`, `1080-60` | `-r 720,1080,1440@60` | +| `-c, --codec` | Video codec | `h264`, `av1`, `dual` | `-c dual` (default) | +| `-f, --format` | Streaming format | `dash`, `hls`, `both` | `-f both` (default) | +| `-p, --poster` | Poster timecode | `HH:MM:SS` or seconds | `-p 00:00:05` or `-p 10` | +| `--accel` | Hardware accelerator | `auto`, `nvenc`, `qsv`, `amf`, `cpu` | `--accel nvenc` | -### Примеры использования +### Examples ```bash -# Базовая конвертация (DASH + HLS, dual codec, автопрофили) +# Default (DASH + HLS, dual codec, auto profiles) create-vod video.mp4 -# Указать выходную директорию +# Custom output directory create-vod video.mp4 ./output -# Только выбранные разрешения +# Selected resolutions create-vod video.mp4 -r 720,1080,1440 -# Высокий FPS для игровых стримов +# High FPS create-vod video.mp4 -r 720@60,1080@60 -# Только DASH формат +# DASH only create-vod video.mp4 -f dash -# Только HLS для Safari/iOS +# HLS only (Safari/iOS) create-vod video.mp4 -f hls -c h264 -# Постер с 5-й секунды +# Poster from 5th second create-vod video.mp4 -p 5 -# Комбинация параметров +# Combined parameters create-vod video.mp4 ./output -r 720,1080@60,1440@60 -c dual -f both -p 00:00:10 ``` -### Поддерживаемые разрешения +### Supported resolutions -| Разрешение | Стандартное название | FPS варианты | -|------------|---------------------|--------------| -| `360` | 360p (640×360) | 30, 60, 90, 120 | -| `480` | 480p (854×480) | 30, 60, 90, 120 | -| `720` | 720p HD (1280×720) | 30, 60, 90, 120 | -| `1080` | 1080p Full HD (1920×1080) | 30, 60, 90, 120 | -| `1440` | 1440p 2K (2560×1440) | 30, 60, 90, 120 | -| `2160` | 2160p 4K (3840×2160) | 30, 60, 90, 120 | +| Resolution | Label | FPS options | +|------------|----------------|------------------| +| `360` | 360p (640×360) | 30, 60, 90, 120 | +| `480` | 480p (854×480) | 30, 60, 90, 120 | +| `720` | 720p (1280×720)| 30, 60, 90, 120 | +| `1080` | 1080p (1920×1080)| 30, 60, 90, 120| +| `1440` | 1440p (2560×1440)| 30, 60, 90, 120| +| `2160` | 2160p (3840×2160)| 30, 60, 90, 120| -**Примечание:** Высокие FPS (60/90/120) создаются автоматически только если исходное видео поддерживает соответствующий FPS. +High FPS (60/90/120) are generated only if the source supports that FPS. -## Автоматические настройки +## Defaults & Automation -- **Длительность сегментов:** 2 секунды -- **NVENC:** автоопределение (GPU если доступен, иначе CPU) -- **Профили качества:** автоматический выбор на основе разрешения исходного видео -- **Битрейт:** динамический расчет по формуле BPP (Bits Per Pixel) -- **Превью спрайты:** генерируются автоматически (160×90px, интервал 1 сек) -- **Постер:** извлекается с начала видео (кадр 0:00:00, можно изменить через `-p`) -- **Параллельное кодирование:** включено +- Segment duration: 2 seconds +- Hardware accel: auto-detect (GPU if available, else CPU) +- Profiles: auto-selected based on source resolution +- Bitrate: BPP-based dynamic calculation +- Thumbnails: auto sprite (160×90, 1s interval) + VTT +- Poster: first frame (0:00:00, configurable via `-p`) +- Parallel encoding: enabled -**Требования:** Node.js ≥18.0.0, FFmpeg, MP4Box (gpac), опционально NVIDIA GPU для ускорения +**Requirements:** Node.js ≥18.0.0, FFmpeg, MP4Box (gpac), optional NVIDIA/Intel/AMD GPU for acceleration diff --git a/README_RU.md b/README_RU.md new file mode 100644 index 0000000..edcafb2 --- /dev/null +++ b/README_RU.md @@ -0,0 +1,113 @@ +# Create VOD 🎬 + +🇺🇸 English README: https://gromlab.ru/vod/create-vod/src/branch/master/README.md + +CLI инструмент для конвертации видео в форматы DASH и HLS с поддержкой аппаратного ускорения (NVENC / Intel QSV / AMD AMF / VAAPI), адаптивным стримингом и автоматической генерацией превью. + +**Возможности:** +- ⚡ Аппаратное ускорение: NVENC / Intel QSV / AMD AMF / VAAPI (автовыбор по приоритету) +- 🎯 Форматы: DASH и HLS (оба из одних сегментов) +- 📊 Профили качества: множественные битрейты и FPS, авто или кастом +- 🖼️ Превью: thumbnail спрайты + VTT, постер с первого кадра +- ⏱️ Прогресс: CLI прогресс-бары по профилям и общему этапу + +## Быстрый старт + +```bash +# Использование через npx (без установки) +npx @gromlab/create-vod video.mp4 + +# Или глобальная установка +npm install -g @gromlab/create-vod +create-vod video.mp4 +``` + +**Системные требования:** +```bash +# Arch Linux +sudo pacman -S ffmpeg gpac + +# Ubuntu/Debian +sudo apt install ffmpeg gpac + +# macOS +brew install ffmpeg gpac +``` + +**Результат:** В текущей директории будет создана папка `video/` с сегментами в папках `{profile}-{codec}/`, манифестами DASH и HLS в корне, постером и превью спрайтами. + +## Параметры CLI + +```bash +create-vod [output-dir] [-r resolutions] [-c codec] [-f format] [-p poster-timecode] +``` + +### Основные параметры + +| Параметр | Описание | По умолчанию | Обязательный | +|----------|----------|--------------|--------------| +| `input-video` | Путь к входному видео файлу | - | ✅ | +| `output-dir` | Директория для выходных файлов | `.` (текущая папка) | ❌ | + +### Опциональные ключи + +| Ключ | Описание | Формат | Пример | +|------|----------|--------|--------| +| `-r, --resolutions` | Выбор профилей качества | `360`, `720@60`, `1080-60` | `-r 720,1080,1440@60` | +| `-c, --codec` | Видео кодек | `h264`, `av1`, `dual` | `-c dual` (по умолчанию) | +| `-f, --format` | Формат стриминга | `dash`, `hls`, `both` | `-f both` (по умолчанию) | +| `-p, --poster` | Таймкод для постера | `HH:MM:SS` или секунды | `-p 00:00:05` или `-p 10` | +| `--accel` | Аппаратный ускоритель | `auto`, `nvenc`, `qsv`, `amf`, `cpu` | `--accel nvenc` | + +### Примеры использования + +```bash +# Базовая конвертация (DASH + HLS, dual codec, автопрофили) +create-vod video.mp4 + +# Указать выходную директорию +create-vod video.mp4 ./output + +# Только выбранные разрешения +create-vod video.mp4 -r 720,1080,1440 + +# Высокий FPS для игровых стримов +create-vod video.mp4 -r 720@60,1080@60 + +# Только DASH формат +create-vod video.mp4 -f dash + +# Только HLS для Safari/iOS +create-vod video.mp4 -f hls -c h264 + +# Постер с 5-й секунды +create-vod video.mp4 -p 5 + +# Комбинация параметров +create-vod video.mp4 ./output -r 720,1080@60,1440@60 -c dual -f both -p 00:00:10 +``` + +### Поддерживаемые разрешения + +| Разрешение | Стандартное название | FPS варианты | +|------------|---------------------|--------------| +| `360` | 360p (640×360) | 30, 60, 90, 120 | +| `480` | 480p (854×480) | 30, 60, 90, 120 | +| `720` | 720p HD (1280×720) | 30, 60, 90, 120 | +| `1080` | 1080p Full HD (1920×1080) | 30, 60, 90, 120 | +| `1440` | 1440p 2K (2560×1440) | 30, 60, 90, 120 | +| `2160` | 2160p 4K (3840×2160) | 30, 60, 90, 120 | + +**Примечание:** Высокие FPS (60/90/120) создаются автоматически только если исходное видео поддерживает соответствующий FPS. + +## Автоматические настройки + +- **Длительность сегментов:** 2 секунды +- **NVENC:** автоопределение (GPU если доступен, иначе CPU) +- **Профили качества:** автоматический выбор на основе разрешения исходного видео +- **Битрейт:** динамический расчет по формуле BPP (Bits Per Pixel) +- **Превью спрайты:** генерируются автоматически (160×90px, интервал 1 сек) +- **Постер:** извлекается с начала видео (кадр 0:00:00, можно изменить через `-p`) +- **Параллельное кодирование:** включено + +**Требования:** Node.js ≥18.0.0, FFmpeg, MP4Box (gpac), опционально NVIDIA GPU для ускорения diff --git a/docs/PUBLISHING.md b/docs/PUBLISHING.md index be081bb..e14b145 100644 --- a/docs/PUBLISHING.md +++ b/docs/PUBLISHING.md @@ -8,7 +8,7 @@ npm login ``` -Введите credentials для аккаунта с доступом к организации `@grom13`. +Введите credentials для аккаунта с доступом к организации `@gromlab`. ### Шаг 2: Сборка проекта @@ -41,7 +41,20 @@ npm pack npm publish --access public ``` -⚠️ **Важно:** Флаг `--access public` обязателен для scoped пакетов (`@grom13/...`), иначе NPM попытается опубликовать как приватный пакет (требует платную подписку). +⚠️ **Важно:** Флаг `--access public` обязателен для scoped пакетов (`@gromlab/...`), иначе NPM попытается опубликовать как приватный пакет (требует платную подписку). + +### Токен и 2FA +- Создайте новый npm-токен с отмеченным чекбоксом **"Bypass two-factor authentication (2FA)"**. +- Добавьте/обновите `~/.npmrc` перед публикацией: + ``` + @gromlab:registry=https://registry.npmjs.org/ + //registry.npmjs.org/:_authToken= + ``` +- После этого публикуйте: + ``` + npm publish --access public + ``` + ### Шаг 5: Проверка публикации @@ -114,7 +127,7 @@ npm install @gromlab/create-vod ### Ошибка: "You do not have permission to publish" -Решение: Убедитесь что вы авторизованы (`npm whoami`) и имеете доступ к организации `@grom13`. +Решение: Убедитесь что вы авторизованы (`npm whoami`) и имеете доступ к организации `@gromlab`. ### Ошибка при сборке diff --git a/package.json b/package.json index 35a04ae..5c14947 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "@gromlab/create-vod", "author": "Gromov Sergei", - "version": "0.1.3", + "version": "0.1.4", "description": "DASH/HLS video converter with hardware acceleration (NVENC/QSV/AMF/VAAPI), thumbnails and poster generation", "type": "module", "main": "./dist/index.js", @@ -61,4 +61,4 @@ "dependencies": { "cli-progress": "^3.12.0" } -} +} \ No newline at end of file