sync
This commit is contained in:
33
README.md
33
README.md
@@ -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
|
||||
```
|
||||
|
||||
### Поддерживаемые разрешения
|
||||
|
||||
120
bin/cli.js
120
bin/cli.js
File diff suppressed because one or more lines are too long
@@ -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 источника ниже запрошенного
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Возможности DASH Video Converter
|
||||
# Возможности Adaptive Video Converter
|
||||
|
||||
## Архитектура
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
```
|
||||
|
||||
### Для архивирования
|
||||
|
||||
30
package.json
30
package.json
@@ -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"
|
||||
},
|
||||
|
||||
33
src/cli.ts
33
src/cli.ts
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user