c1c66a7d9a0008ed961db74c51a02d253d5e0a97
🎬 Twitch Highlight Detector
Pipeline automatizado para detectar y generar highlights de streams de Twitch y Kick.
✨ Características
- Descarga automática de VODs y chat
- Detección 2 de 3: Chat saturado + Audio (gritos) + Colores brillantes
- Modo Draft: Procesa en 360p para prueba rápida
- Modo HD: Procesa en 1080p para calidad máxima
- Soporte GPU: Preparado para NVIDIA (CUDA) y AMD (ROCm)
- CLI simple: Un solo comando para todo el pipeline
🚀 Uso Rápido
# Modo Draft (360p) - Prueba rápida
./pipeline.sh <video_id> <nombre> --draft
# Modo HD (1080p) - Alta calidad
./pipeline.sh <video_id> <nombre> --hd
Ejemplo
# Descargar y procesar en modo draft
./pipeline.sh 2701190361 elxokas --draft
# Si te gusta, procesar en HD
./pipeline.sh 2701190361 elxokas_hd --hd
📋 Requisitos
Sistema
# Arch Linux
sudo pacman -S ffmpeg streamlink git
# Ubuntu/Debian
sudo apt install ffmpeg streamlink git
# macOS
brew install ffmpeg streamlink git
Python
pip install moviepy opencv-python scipy numpy python-dotenv torch
.NET (para TwitchDownloaderCLI)
# Descarga el binario desde releases o compila
# https://github.com/lay295/TwitchDownloader/releases
📖 Documentación
| Archivo | Descripción |
|---|---|
| README.md | Este archivo |
| CONtexto.md | Historia y contexto del proyecto |
| TODO.md | Lista de tareas pendientes |
| HIGHLIGHT.md | Guía de uso del pipeline |
🔧 Instalación
1. Clonar el repo
git clone https://tu-gitea/twitch-highlight-detector.git
cd twitch-highlight-detector
2. Configurar credenciales
cp .env.example .env
# Edita .env con tus credenciales de Twitch
3. Instalar dependencias
pip install -r requirements.txt
4. Instalar TwitchDownloaderCLI
# Descargar desde releases
curl -L -o TwitchDownloaderCLI https://github.com/lay295/TwitchDownloader/releases/latest/download/TwitchDownloaderCLI
chmod +x TwitchDownloaderCLI
sudo mv TwitchDownloaderCLI /usr/local/bin/
🎯 Cómo Funciona
Pipeline (2 de 3)
El sistema detecta highlights cuando se cumplen al menos 2 de estas 3 condiciones:
- Chat saturado: Muchos mensajes en poco tiempo
- Audio intenso: Picos de volumen (gritos, momentos épicos)
- Colores brillantes: Efectos visuales, cambios de escena
Flujo
1. streamlink → Descarga video (VOD)
2. TwitchDownloaderCLI → Descarga chat
3. detector_gpu.py → Analiza chat + audio + color
4. generate_video.py → Crea video resumen
📁 Estructura
├── .env # Credenciales (noCommit)
├── .gitignore
├── requirements.txt # Dependencias Python
├── main.py # Entry point
├── pipeline.sh # Pipeline completo
├── detector_gpu.py # Detector (chat + audio + color)
├── generate_video.py # Generador de video
├── lower # Script descarga streams
├── README.md # Este archivo
├── CONtexto.md # Contexto del proyecto
├── TODO.md # Tareas pendientes
└── HIGHLIGHT.md # Guía detallada
⚙️ Configuración
Parámetros del Detector
Edita detector_gpu.py para ajustar:
--threshold # Sensibilidad (default: 1.5)
--min-duration # Duración mínima highlight (default: 10s)
--device # GPU: auto/cuda/cpu
Parámetros del Video
Edita generate_video.py:
--padding # Segundos extra antes/después (default: 5)
🖥️ GPU
NVIDIA (CUDA)
pip install torch torchvision --index-url https://download.pytorch.org/whl/cu121
AMD (ROCm)
pip install torch torchvision --index-url https://download.pytorch.org/whl/rocm7.1
Nota: El procesamiento actual es CPU-bound. GPU acceleration es future work.
🔨 Desarrollo
Tests
# Test detector con video existente
python3 detector_gpu.py --video video.mp4 --chat chat.json --output highlights.json
Pipeline Manual
# 1. Descargar video
streamlink "https://www.twitch.tv/videos/ID" best -o video.mp4
# 2. Descargar chat
TwitchDownloaderCLI chatdownload --id ID -o chat.json
# 3. Detectar highlights
python3 detector_gpu.py --video video.mp4 --chat chat.json --output highlights.json
# 4. Generar video
python3 generate_video.py --video video.mp4 --highlights highlights.json --output final.mp4
📊 Resultados
Con un stream de 5.3 horas (19GB):
- Chat: ~13,000 mensajes
- Picos detectados: ~139
- Highlights útiles (>5s): 4-10
- Video final: ~1-5 minutos
🤝 Contribuir
- Fork el repo
- Crea una branch (
git checkout -b feature/) - Commit tus cambios (
git commit -m 'Add feature') - Push a la branch (
git push origin feature/) - Abre un Pull Request
📝 Licencia
MIT License - Ver LICENSE para más detalles.
🙏 Créditos
- TwitchDownloader - Chat downloading
- streamlink - Video downloading
- MoviePy - Video processing
- PyTorch - GPU support
Description
Languages
Python
97.1%
Shell
2.9%