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
# Использование через npx (без установки)
npx @grom13/dvc-cli video.mp4
npx @grom13/adaptive-video-converter video.mp4
# Или глобальная установка
npm install -g @grom13/dvc-cli
dvc-cli video.mp4
npm install -g @grom13/adaptive-video-converter
# Две команды на выбор:
adaptive-video-converter video.mp4 # полное название
avc video.mp4 # короткая форма
```
**Системные требования:**
@@ -32,7 +35,7 @@ brew install ffmpeg gpac
## Параметры CLI
```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
# Базовая конвертация (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 для игровых стримов
dvc-cli video.mp4 -r 720@60,1080@60
avc video.mp4 -r 720@60,1080@60
# Только DASH формат
dvc-cli video.mp4 -f dash
avc video.mp4 -f dash
# Только HLS для Safari/iOS
dvc-cli video.mp4 -f hls -c h264
avc video.mp4 -f hls -c h264
# Постер с 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 — Справочник команд
Полное руководство по использованию DASH Video Converter CLI.
Полное руководство по использованию Adaptive Video Converter CLI.
---
## Синтаксис
```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
# Базовые разрешения (30 FPS)
dvc-cli video.mp4 -r 360,720,1080
avc video.mp4 -r 360,720,1080
# С указанием 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:**
@@ -71,13 +71,13 @@ dvc-cli video.mp4 -r 360 720@60 1080 1440@120
**Примеры:**
```bash
# Только H.264 (быстрее, больше места)
dvc-cli video.mp4 -c h264
avc video.mp4 -c h264
# Только AV1 (медленнее, меньше места)
dvc-cli video.mp4 -c av1
avc video.mp4 -c av1
# Оба кодека (максимальная совместимость)
dvc-cli video.mp4 -c dual
avc video.mp4 -c dual
```
**GPU ускорение:**
@@ -100,13 +100,13 @@ dvc-cli video.mp4 -c dual
**Примеры:**
```bash
# Только DASH
dvc-cli video.mp4 -f dash
avc video.mp4 -f dash
# Только 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
# 5 секунд от начала
dvc-cli video.mp4 -p 5
avc video.mp4 -p 5
# 1 минута 30 секунд
dvc-cli video.mp4 -p 00:01:30
avc video.mp4 -p 00:01:30
```
**По умолчанию:** `00:00:01` (1 секунда от начала)
@@ -179,68 +179,68 @@ dvc-cli video.mp4 -p 00:01:30
```bash
# Простейший запуск (оба формата, dual codec, автопрофили)
dvc-cli video.mp4
avc video.mp4
# С указанием выходной директории
dvc-cli video.mp4 ./output
avc video.mp4 ./output
```
### Кастомные профили
```bash
# Только 720p и 1080p
dvc-cli video.mp4 -r 720,1080
avc video.mp4 -r 720,1080
# High FPS профили
dvc-cli video.mp4 -r 720@60,1080@60,1440@120
avc video.mp4 -r 720@60,1080@60,1440@120
# Один профиль 4K
dvc-cli video.mp4 -r 2160
avc video.mp4 -r 2160
```
### Выбор кодека
```bash
# Быстрое кодирование (только H.264)
dvc-cli video.mp4 -c h264
avc video.mp4 -c h264
# Лучшее сжатие (только AV1)
dvc-cli video.mp4 -c av1
avc video.mp4 -c av1
# Максимальная совместимость
dvc-cli video.mp4 -c dual
avc video.mp4 -c dual
```
### Выбор формата
```bash
# DASH для современных браузеров
dvc-cli video.mp4 -f dash
avc video.mp4 -f dash
# 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
# Производственная конфигурация
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)
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)
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
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
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
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 контента
```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 для премиум контента.
@@ -348,9 +348,9 @@ dvc-cli video.mp4 -r 720,1080,1440,2160 -c dual -f both
**Решение:**
```bash
# Используйте 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 источника ниже запрошенного

View File

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

View File

@@ -13,7 +13,7 @@ npm login
### Шаг 2: Сборка проекта
```bash
cd /home/gromov/projects/my/dvc-cli
cd /home/gromov/projects/my/adaptive-video-converter
npm run build
```
@@ -30,7 +30,7 @@ npm pack --dry-run
# Или создать тестовый архив для проверки
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
# Проверить что пакет доступен
npm view @grom13/dvc-cli
npm view @grom13/adaptive-video-converter
# Протестировать установку через 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
```
@@ -82,10 +82,10 @@ npm publish --access public
```bash
# Удалить конкретную версию (в течение 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 нельзя повторно опубликовать ту же версию. Нужно увеличить версию.
@@ -96,14 +96,14 @@ npm unpublish @grom13/dvc-cli --force
```bash
# Через 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
# Локальная установка в проект
npm install @grom13/dvc-cli
npm install @grom13/adaptive-video-converter
```
## Troubleshooting

View File

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

View File

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

View File

@@ -1,13 +1,14 @@
#!/usr/bin/env node
/**
* DASH Video Converter CLI
*
* Adaptive Video Converter CLI
* Конвертер видео в адаптивные форматы DASH и HLS
*
* 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:
* dvc-cli ./video.mp4 ./output -r 720,1080
* avc ./video.mp4 ./output -r 720,1080
*/
import { convertToDash, checkFFmpeg, checkNvenc, checkMP4Box, checkAV1Support, getVideoMetadata } from './index';
@@ -109,7 +110,7 @@ const input = positionalArgs[0];
const outputDir = positionalArgs[1] || '.'; // Текущая директория по умолчанию
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(' -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)');
@@ -121,16 +122,16 @@ if (!input) {
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('\nExamples:');
console.error(' dvc-cli video.mp4');
console.error(' dvc-cli video.mp4 ./output');
console.error(' dvc-cli video.mp4 -r 360,480,720');
console.error(' dvc-cli video.mp4 -c av1 --av1-cq 40');
console.error(' dvc-cli video.mp4 -c dual --h264-cq 30 --av1-cq 39');
console.error(' dvc-cli video.mp4 -f hls');
console.error(' dvc-cli 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(' dvc-cli 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');
console.error(' avc video.mp4 ./output');
console.error(' avc video.mp4 -r 360,480,720');
console.error(' avc video.mp4 -c av1 --av1-cq 40');
console.error(' avc video.mp4 -c dual --h264-cq 30 --av1-cq 39');
console.error(' avc video.mp4 -f hls');
console.error(' avc video.mp4 -c dual -f both');
console.error(' avc video.mp4 -r 720@60,1080@60,2160@60 -c av1 -f dash');
console.error(' avc video.mp4 -p 00:00:05');
console.error(' avc video.mp4 ./output -r 720,1080 -c dual -f both -p 10 --h264-cq 28 --av1-cq 37');
process.exit(1);
}