# Adaptive Video Converter 🎬 CLI инструмСнт для ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚Π°Ρ†ΠΈΠΈ Π²ΠΈΠ΄Π΅ΠΎ Π² Π°Π΄Π°ΠΏΡ‚ΠΈΠ²Π½Ρ‹Π΅ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρ‹ DASH ΠΈ HLS с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ GPU ускорСния (NVENC), мноТСствСнными профилями качСства ΠΈ автоматичСской Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠ΅ΠΉ ΠΏΡ€Π΅Π²ΡŒΡŽ. **ВозмоТности:** ⚑ NVENC ускорСниС β€’ 🎯 DASH + HLS Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρ‹ β€’ πŸ“Š Адаптивный Π±ΠΈΡ‚Ρ€Π΅ΠΉΡ‚ (ABR) β€’ πŸ–ΌοΈ Thumbnail спрайты β€’ πŸ“Έ ГСнСрация постСра β€’ ⏱️ ΠŸΡ€ΠΎΠ³Ρ€Π΅ΡΡ Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ## Быстрый старт ```bash # ИспользованиС Ρ‡Π΅Ρ€Π΅Π· npx (Π±Π΅Π· установки) npx @grom13/adaptive-video-converter video.mp4 # Или глобальная установка npm install -g @grom13/adaptive-video-converter # Π”Π²Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π½Π° Π²Ρ‹Π±ΠΎΡ€: adaptive-video-converter video.mp4 # ΠΏΠΎΠ»Π½ΠΎΠ΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ avc 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 avc [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` | ### ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ использования ```bash # Базовая конвСртация (DASH + HLS, dual codec, Π°Π²Ρ‚ΠΎΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈ) avc video.mp4 # Π£ΠΊΠ°Π·Π°Ρ‚ΡŒ Π²Ρ‹Ρ…ΠΎΠ΄Π½ΡƒΡŽ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡŽ avc video.mp4 ./output # Волько Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹Π΅ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ avc video.mp4 -r 720,1080,1440 # Высокий FPS для ΠΈΠ³Ρ€ΠΎΠ²Ρ‹Ρ… стримов avc video.mp4 -r 720@60,1080@60 # Волько DASH Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ avc video.mp4 -f dash # Волько HLS для Safari/iOS avc video.mp4 -f hls -c h264 # ΠŸΠΎΡΡ‚Π΅Ρ€ с 5-ΠΉ сСкунды avc video.mp4 -p 5 # ΠšΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΡ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² avc 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 сСк) - **ΠŸΠΎΡΡ‚Π΅Ρ€:** извлСкаСтся с 1-ΠΉ сСкунды Π²ΠΈΠ΄Π΅ΠΎ (ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· `-p`) - **ΠŸΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠ΅ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅:** Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΎ **ВрСбования:** Node.js β‰₯18.0.0, FFmpeg, MP4Box (gpac), ΠΎΠΏΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ NVIDIA GPU для ускорСния