This commit is contained in:
2025-12-03 21:55:35 +03:00
parent 196b8b3b04
commit 2587c3830d
8 changed files with 162 additions and 150 deletions

View File

@@ -1,18 +1,21 @@
# DASH Video Converter 🎬 # Adaptive Video Converter 🎬
CLI инструмент для конвертации видео в форматы DASH и HLS с поддержкой GPU ускорения (NVENC), адаптивным стримингом и автоматической генерацией превью. CLI инструмент для конвертации видео в адаптивные форматы DASH и HLS с поддержкой GPU ускорения (NVENC), множественными профилями качества и автоматической генерацией превью.
**Возможности:** ⚡ NVENC ускорение • 🎯 DASH + HLS форматы • 📊 Множественные битрейты • 🖼️ Thumbnail спрайты • 📸 Генерация постера • ⏱️ Прогресс в реальном времени **Возможности:** ⚡ NVENC ускорение • 🎯 DASH + HLS форматы • 📊 Адаптивный битрейт (ABR) • 🖼️ Thumbnail спрайты • 📸 Генерация постера • ⏱️ Прогресс в реальном времени
## Быстрый старт ## Быстрый старт
```bash ```bash
# Использование через npx (без установки) # Использование через npx (без установки)
npx @grom13/dvc-cli video.mp4 npx @grom13/adaptive-video-converter video.mp4
# Или глобальная установка # Или глобальная установка
npm install -g @grom13/dvc-cli npm install -g @grom13/adaptive-video-converter
dvc-cli video.mp4
# Две команды на выбор:
adaptive-video-converter video.mp4 # полное название
avc video.mp4 # короткая форма
``` ```
**Системные требования:** **Системные требования:**
@@ -32,7 +35,7 @@ brew install ffmpeg gpac
## Параметры CLI ## Параметры CLI
```bash ```bash
dvc-cli <input-video> [output-dir] [-r resolutions] [-c codec] [-f format] [-p poster-timecode] avc <input-video> [output-dir] [-r resolutions] [-c codec] [-f format] [-p poster-timecode]
``` ```
### Основные параметры ### Основные параметры
@@ -55,28 +58,28 @@ dvc-cli <input-video> [output-dir] [-r resolutions] [-c codec] [-f format] [-p p
```bash ```bash
# Базовая конвертация (DASH + HLS, dual codec, автопрофили) # Базовая конвертация (DASH + HLS, dual codec, автопрофили)
dvc-cli video.mp4 avc video.mp4
# Указать выходную директорию # Указать выходную директорию
dvc-cli video.mp4 ./output avc video.mp4 ./output
# Только выбранные разрешения # Только выбранные разрешения
dvc-cli video.mp4 -r 720,1080,1440 avc video.mp4 -r 720,1080,1440
# Высокий FPS для игровых стримов # Высокий FPS для игровых стримов
dvc-cli video.mp4 -r 720@60,1080@60 avc video.mp4 -r 720@60,1080@60
# Только DASH формат # Только DASH формат
dvc-cli video.mp4 -f dash avc video.mp4 -f dash
# Только HLS для Safari/iOS # Только HLS для Safari/iOS
dvc-cli video.mp4 -f hls -c h264 avc video.mp4 -f hls -c h264
# Постер с 5-й секунды # Постер с 5-й секунды
dvc-cli video.mp4 -p 5 avc video.mp4 -p 5
# Комбинация параметров # Комбинация параметров
dvc-cli video.mp4 ./output -r 720,1080@60,1440@60 -c dual -f both -p 00:00:10 avc video.mp4 ./output -r 720,1080@60,1440@60 -c dual -f both -p 00:00:10
``` ```
### Поддерживаемые разрешения ### Поддерживаемые разрешения

File diff suppressed because one or more lines are too long

View File

@@ -1,13 +1,13 @@
# CLI Reference — Справочник команд # CLI Reference — Справочник команд
Полное руководство по использованию DASH Video Converter CLI. Полное руководство по использованию Adaptive Video Converter CLI.
--- ---
## Синтаксис ## Синтаксис
```bash ```bash
dvc-cli <input-video> [output-dir] [options] avc <input-video> [output-dir] [options]
``` ```
## Позиционные аргументы ## Позиционные аргументы
@@ -41,13 +41,13 @@ dvc-cli <input-video> [output-dir] [options]
**Примеры:** **Примеры:**
```bash ```bash
# Базовые разрешения (30 FPS) # Базовые разрешения (30 FPS)
dvc-cli video.mp4 -r 360,720,1080 avc video.mp4 -r 360,720,1080
# С указанием FPS # С указанием FPS
dvc-cli video.mp4 -r 720@60,1080@60 avc video.mp4 -r 720@60,1080@60
# Смешанный формат # Смешанный формат
dvc-cli video.mp4 -r 360 720@60 1080 1440@120 avc video.mp4 -r 360 720@60 1080 1440@120
``` ```
**Автоматическая коррекция FPS:** **Автоматическая коррекция FPS:**
@@ -71,13 +71,13 @@ dvc-cli video.mp4 -r 360 720@60 1080 1440@120
**Примеры:** **Примеры:**
```bash ```bash
# Только H.264 (быстрее, больше места) # Только H.264 (быстрее, больше места)
dvc-cli video.mp4 -c h264 avc video.mp4 -c h264
# Только AV1 (медленнее, меньше места) # Только AV1 (медленнее, меньше места)
dvc-cli video.mp4 -c av1 avc video.mp4 -c av1
# Оба кодека (максимальная совместимость) # Оба кодека (максимальная совместимость)
dvc-cli video.mp4 -c dual avc video.mp4 -c dual
``` ```
**GPU ускорение:** **GPU ускорение:**
@@ -100,13 +100,13 @@ dvc-cli video.mp4 -c dual
**Примеры:** **Примеры:**
```bash ```bash
# Только DASH # Только DASH
dvc-cli video.mp4 -f dash avc video.mp4 -f dash
# Только HLS (для Safari/iOS) # Только HLS (для Safari/iOS)
dvc-cli video.mp4 -f hls avc video.mp4 -f hls
# Оба формата (максимальная совместимость) # Оба формата (максимальная совместимость)
dvc-cli video.mp4 -f both avc video.mp4 -f both
``` ```
**Особенности:** **Особенности:**
@@ -163,10 +163,10 @@ output/
**Примеры:** **Примеры:**
```bash ```bash
# 5 секунд от начала # 5 секунд от начала
dvc-cli video.mp4 -p 5 avc video.mp4 -p 5
# 1 минута 30 секунд # 1 минута 30 секунд
dvc-cli video.mp4 -p 00:01:30 avc video.mp4 -p 00:01:30
``` ```
**По умолчанию:** `00:00:01` (1 секунда от начала) **По умолчанию:** `00:00:01` (1 секунда от начала)
@@ -179,68 +179,68 @@ dvc-cli video.mp4 -p 00:01:30
```bash ```bash
# Простейший запуск (оба формата, dual codec, автопрофили) # Простейший запуск (оба формата, dual codec, автопрофили)
dvc-cli video.mp4 avc video.mp4
# С указанием выходной директории # С указанием выходной директории
dvc-cli video.mp4 ./output avc video.mp4 ./output
``` ```
### Кастомные профили ### Кастомные профили
```bash ```bash
# Только 720p и 1080p # Только 720p и 1080p
dvc-cli video.mp4 -r 720,1080 avc video.mp4 -r 720,1080
# High FPS профили # High FPS профили
dvc-cli video.mp4 -r 720@60,1080@60,1440@120 avc video.mp4 -r 720@60,1080@60,1440@120
# Один профиль 4K # Один профиль 4K
dvc-cli video.mp4 -r 2160 avc video.mp4 -r 2160
``` ```
### Выбор кодека ### Выбор кодека
```bash ```bash
# Быстрое кодирование (только H.264) # Быстрое кодирование (только H.264)
dvc-cli video.mp4 -c h264 avc video.mp4 -c h264
# Лучшее сжатие (только AV1) # Лучшее сжатие (только AV1)
dvc-cli video.mp4 -c av1 avc video.mp4 -c av1
# Максимальная совместимость # Максимальная совместимость
dvc-cli video.mp4 -c dual avc video.mp4 -c dual
``` ```
### Выбор формата ### Выбор формата
```bash ```bash
# DASH для современных браузеров # DASH для современных браузеров
dvc-cli video.mp4 -f dash avc video.mp4 -f dash
# HLS для Safari/iOS # HLS для Safari/iOS
dvc-cli video.mp4 -f hls -c h264 avc video.mp4 -f hls -c h264
# Оба формата для всех устройств # Оба формата для всех устройств
dvc-cli video.mp4 -f both -c dual avc video.mp4 -f both -c dual
``` ```
### Комбинированные примеры ### Комбинированные примеры
```bash ```bash
# Производственная конфигурация # Производственная конфигурация
dvc-cli video.mp4 ./cdn/videos -r 360,720,1080 -c dual -f both avc video.mp4 ./cdn/videos -r 360,720,1080 -c dual -f both
# High-end конфигурация (4K, high FPS) # High-end конфигурация (4K, high FPS)
dvc-cli video.mp4 -r 720@60,1080@60,1440@120,2160@60 -c dual -f both avc video.mp4 -r 720@60,1080@60,1440@120,2160@60 -c dual -f both
# Быстрая конвертация для тестов # Быстрая конвертация для тестов
dvc-cli video.mp4 -r 720 -c h264 -f dash avc video.mp4 -r 720 -c h264 -f dash
# Mobile-first (низкие разрешения, HLS) # Mobile-first (низкие разрешения, HLS)
dvc-cli video.mp4 -r 360,480,720 -c h264 -f hls avc video.mp4 -r 360,480,720 -c h264 -f hls
# Кастомный постер # Кастомный постер
dvc-cli video.mp4 -r 720,1080 -p 00:02:30 avc video.mp4 -r 720,1080 -p 00:02:30
``` ```
--- ---
@@ -302,7 +302,7 @@ brew install ffmpeg gpac
### Для максимальной совместимости ### Для максимальной совместимости
```bash ```bash
dvc-cli video.mp4 -c dual -f both avc video.mp4 -c dual -f both
``` ```
Генерирует: Генерирует:
@@ -313,7 +313,7 @@ dvc-cli video.mp4 -c dual -f both
### Для быстрой разработки ### Для быстрой разработки
```bash ```bash
dvc-cli video.mp4 -r 720 -c h264 -f dash avc video.mp4 -r 720 -c h264 -f dash
``` ```
Быстрое кодирование одного профиля. Быстрое кодирование одного профиля.
@@ -321,7 +321,7 @@ dvc-cli video.mp4 -r 720 -c h264 -f dash
### Для продакшена ### Для продакшена
```bash ```bash
dvc-cli video.mp4 -r 360,480,720,1080,1440 -c dual -f both avc video.mp4 -r 360,480,720,1080,1440 -c dual -f both
``` ```
Широкий диапазон профилей для всех устройств. Широкий диапазон профилей для всех устройств.
@@ -329,7 +329,7 @@ dvc-cli video.mp4 -r 360,480,720,1080,1440 -c dual -f both
### Для 4K контента ### Для 4K контента
```bash ```bash
dvc-cli video.mp4 -r 720,1080,1440,2160 -c dual -f both avc video.mp4 -r 720,1080,1440,2160 -c dual -f both
``` ```
От HD до 4K для премиум контента. От HD до 4K для премиум контента.
@@ -348,9 +348,9 @@ dvc-cli video.mp4 -r 720,1080,1440,2160 -c dual -f both
**Решение:** **Решение:**
```bash ```bash
# Используйте h264 или dual # Используйте h264 или dual
dvc-cli video.mp4 -f hls -c h264 avc video.mp4 -f hls -c h264
# или # или
dvc-cli video.mp4 -f hls -c dual avc video.mp4 -f hls -c dual
``` ```
### FPS источника ниже запрошенного ### FPS источника ниже запрошенного

View File

@@ -1,4 +1,4 @@
# Возможности DASH Video Converter # Возможности Adaptive Video Converter
## Архитектура ## Архитектура

View File

@@ -13,7 +13,7 @@ npm login
### Шаг 2: Сборка проекта ### Шаг 2: Сборка проекта
```bash ```bash
cd /home/gromov/projects/my/dvc-cli cd /home/gromov/projects/my/adaptive-video-converter
npm run build npm run build
``` ```
@@ -30,7 +30,7 @@ npm pack --dry-run
# Или создать тестовый архив для проверки # Или создать тестовый архив для проверки
npm pack npm pack
# Это создаст файл grom13-dvc-cli-0.1.0.tgz # Это создаст файл grom13-adaptive-video-converter-0.1.0.tgz
``` ```
## Публикация ## Публикация
@@ -47,13 +47,13 @@ npm publish --access public
```bash ```bash
# Проверить что пакет доступен # Проверить что пакет доступен
npm view @grom13/dvc-cli npm view @grom13/adaptive-video-converter
# Протестировать установку через npx # Протестировать установку через npx
npx @grom13/dvc-cli --help npx @grom13/adaptive-video-converter --help
# Или установить глобально и протестировать # Или установить глобально и протестировать
npm install -g @grom13/dvc-cli npm install -g @grom13/adaptive-video-converter
dvc --help dvc --help
``` ```
@@ -82,10 +82,10 @@ npm publish --access public
```bash ```bash
# Удалить конкретную версию (в течение 72 часов) # Удалить конкретную версию (в течение 72 часов)
npm unpublish @grom13/dvc-cli@0.1.0 npm unpublish @grom13/adaptive-video-converter@0.1.0
# Удалить весь пакет (использовать осторожно!) # Удалить весь пакет (использовать осторожно!)
npm unpublish @grom13/dvc-cli --force npm unpublish @grom13/adaptive-video-converter --force
``` ```
⚠️ **Внимание:** После unpublish нельзя повторно опубликовать ту же версию. Нужно увеличить версию. ⚠️ **Внимание:** После unpublish нельзя повторно опубликовать ту же версию. Нужно увеличить версию.
@@ -96,14 +96,14 @@ npm unpublish @grom13/dvc-cli --force
```bash ```bash
# Через npx (без установки) # Через npx (без установки)
npx @grom13/dvc-cli video.mp4 ./output npx @grom13/adaptive-video-converter video.mp4 ./output
# Глобальная установка # Глобальная установка
npm install -g @grom13/dvc-cli npm install -g @grom13/adaptive-video-converter
dvc video.mp4 ./output dvc video.mp4 ./output
# Локальная установка в проект # Локальная установка в проект
npm install @grom13/dvc-cli npm install @grom13/adaptive-video-converter
``` ```
## Troubleshooting ## Troubleshooting

View File

@@ -468,8 +468,8 @@ chmod +x test_codec.sh
# - AV1 для современных браузеров # - AV1 для современных браузеров
# - H.264 для старых устройств (iOS < 14) # - H.264 для старых устройств (iOS < 14)
# Пример: dvc-cli уже реализует это # Пример: avc уже реализует это
dvc-cli input.mp4 output/ -c dual -f both -r 360,720,1080 avc input.mp4 output/ -c dual -f both -r 360,720,1080
``` ```
### Для архивирования ### Для архивирования

View File

@@ -1,12 +1,13 @@
{ {
"name": "@grom13/dvc-cli", "name": "@grom13/adaptive-video-converter",
"version": "0.1.3", "version": "0.0.1",
"description": "Fast DASH video converter with NVENC acceleration and thumbnail sprites", "description": "Конвертер видео в адаптивные форматы DASH и HLS с GPU-ускорением (NVENC) и генерацией превью",
"type": "module", "type": "module",
"main": "./dist/index.js", "main": "./dist/index.js",
"types": "./dist/index.d.ts", "types": "./dist/index.d.ts",
"bin": { "bin": {
"dvc-cli": "./bin/cli.js" "adaptive-video-converter": "./bin/cli.js",
"avc": "./bin/cli.js"
}, },
"exports": { "exports": {
".": { ".": {
@@ -29,27 +30,30 @@
"test": "bun run src/cli.ts" "test": "bun run src/cli.ts"
}, },
"keywords": [ "keywords": [
"adaptive-video",
"video-converter",
"dash", "dash",
"video", "hls",
"converter",
"ffmpeg", "ffmpeg",
"nvenc", "nvenc",
"streaming",
"cli",
"video-processing",
"adaptive-streaming", "adaptive-streaming",
"thumbnails" "abr",
"video-processing",
"thumbnails",
"av1",
"h264",
"cli"
], ],
"author": "grom13", "author": "grom13",
"license": "MIT", "license": "MIT",
"repository": { "repository": {
"type": "git", "type": "git",
"url": "https://gromlab.ru/gromov/dvc-cli.git" "url": "https://gromlab.ru/gromov/adaptive-video-converter.git"
}, },
"bugs": { "bugs": {
"url": "https://gromlab.ru/gromov/dvc-cli/issues" "url": "https://gromlab.ru/gromov/adaptive-video-converter/issues"
}, },
"homepage": "https://gromlab.ru/gromov/dvc-cli#readme", "homepage": "https://gromlab.ru/gromov/adaptive-video-converter#readme",
"engines": { "engines": {
"node": ">=18.0.0" "node": ">=18.0.0"
}, },

View File

@@ -1,13 +1,14 @@
#!/usr/bin/env node #!/usr/bin/env node
/** /**
* DASH Video Converter CLI * Adaptive Video Converter CLI
* * Конвертер видео в адаптивные форматы DASH и HLS
*
* Usage: * Usage:
* dvc-cli <input-video> [output-dir] [-r resolutions] [-p poster-timecode] * avc <input-video> [output-dir] [-r resolutions] [-c codec] [-f format] [-p poster-timecode]
* *
* Example: * Example:
* dvc-cli ./video.mp4 ./output -r 720,1080 * avc ./video.mp4 ./output -r 720,1080
*/ */
import { convertToDash, checkFFmpeg, checkNvenc, checkMP4Box, checkAV1Support, getVideoMetadata } from './index'; import { convertToDash, checkFFmpeg, checkNvenc, checkMP4Box, checkAV1Support, getVideoMetadata } from './index';
@@ -109,7 +110,7 @@ const input = positionalArgs[0];
const outputDir = positionalArgs[1] || '.'; // Текущая директория по умолчанию const outputDir = positionalArgs[1] || '.'; // Текущая директория по умолчанию
if (!input) { if (!input) {
console.error('❌ Usage: dvc-cli <input-video> [output-dir] [options]'); console.error('❌ Usage: avc <input-video> [output-dir] [options]');
console.error('\nOptions:'); console.error('\nOptions:');
console.error(' -r, --resolutions Video resolutions (e.g., 360,480,720 or 720@60,1080@60)'); console.error(' -r, --resolutions Video resolutions (e.g., 360,480,720 or 720@60,1080@60)');
console.error(' -c, --codec Video codec: av1, h264, or dual (default: dual)'); console.error(' -c, --codec Video codec: av1, h264, or dual (default: dual)');
@@ -121,16 +122,16 @@ if (!input) {
console.error(' --av1-cq <value> AV1 GPU CQ value (0-51, lower = better, default: auto)'); console.error(' --av1-cq <value> AV1 GPU CQ value (0-51, lower = better, default: auto)');
console.error(' --av1-crf <value> AV1 CPU CRF value (0-63, lower = better, default: auto)'); console.error(' --av1-crf <value> AV1 CPU CRF value (0-63, lower = better, default: auto)');
console.error('\nExamples:'); console.error('\nExamples:');
console.error(' dvc-cli video.mp4'); console.error(' avc video.mp4');
console.error(' dvc-cli video.mp4 ./output'); console.error(' avc video.mp4 ./output');
console.error(' dvc-cli video.mp4 -r 360,480,720'); console.error(' avc video.mp4 -r 360,480,720');
console.error(' dvc-cli video.mp4 -c av1 --av1-cq 40'); console.error(' avc video.mp4 -c av1 --av1-cq 40');
console.error(' dvc-cli video.mp4 -c dual --h264-cq 30 --av1-cq 39'); console.error(' avc video.mp4 -c dual --h264-cq 30 --av1-cq 39');
console.error(' dvc-cli video.mp4 -f hls'); console.error(' avc video.mp4 -f hls');
console.error(' dvc-cli video.mp4 -c dual -f both'); console.error(' avc video.mp4 -c dual -f both');
console.error(' dvc-cli video.mp4 -r 720@60,1080@60,2160@60 -c av1 -f dash'); console.error(' avc video.mp4 -r 720@60,1080@60,2160@60 -c av1 -f dash');
console.error(' dvc-cli video.mp4 -p 00:00:05'); console.error(' avc video.mp4 -p 00:00:05');
console.error(' dvc-cli video.mp4 ./output -r 720,1080 -c dual -f both -p 10 --h264-cq 28 --av1-cq 37'); console.error(' avc video.mp4 ./output -r 720,1080 -c dual -f both -p 10 --h264-cq 28 --av1-cq 37');
process.exit(1); process.exit(1);
} }