- New 2-of-3 detection system (chat + audio + color) - GPU support (PyTorch ROCm/CUDA ready) - Draft mode (360p) for fast testing - HD mode (1080p) for final render - Auto download video + chat - CLI pipeline script - Documentation in Spanish
4.8 KiB
4.8 KiB
TODO - Mejoras Pendientes
Estado Actual
Working ✅
- Descarga de video (streamlink)
- Descarga de chat (TwitchDownloaderCLI)
- Detección por chat saturado
- Generación de video (moviepy)
- PyTorch con ROCm instalado
Pendiente ❌
- Análisis de audio
- Análisis de color
- Uso de GPU en procesamiento
PRIORIDAD 1: Sistema 2 de 3
[ ] Audio - Picos de Sonido
Implementar detección de gritos/picos de volumen.
Método actual (CPU):
- Extraer audio con ffmpeg
- Usar librosa para RMS
- Detectar picos con scipy
Método GPU (a implementar):
import torch
import torchaudio
# Usar GPU para análisis espectral
waveform, sr = torchaudio.load(audio_file)
spectrogram = torchaudio.transforms.Spectrogram()(waveform)
Tareas:
- Extraer audio del video con ffmpeg
- Calcular RMS/energía por ventana
- Detectar picos (threshold = media + 1.5*std)
- Devolver timestamps de picos
[ ] Color - Momentos Brillantes
Detectar cambios de color/brillo en el video.
Método GPU:
import cv2
# OpenCV con OpenCL
cv2.ocl::setUseOpenCL(True)
Tareas:
- Procesar frames con OpenCV GPU
- Calcular saturación y brillo HSV
- Detectar momentos con cambios significativos
- Devolver timestamps
[ ] Combinar 2 de 3
Sistema de scoring:
highlight = (chat_score >= 2) + (audio_score >= 1.5) + (color_score >= 0.5)
if highlight >= 2: es highlight
PRIORIDAD 2: GPU - Optimizar para 6800XT
[ ] PyTorch con ROCm
✅ Ya instalado:
PyTorch: 2.10.0+rocm7.1
ROCm available: True
Device: AMD Radeon Graphics
[ ] OpenCV con OpenCL
# Verificar soporte OpenCL
python -c "import cv2; print(cv2.ocl.haveOpenCL())"
Si no tiene OpenCL:
- Instalar opencv-python (no headless)
- Instalar ocl-runtime para AMD
[ ] Reemplazar librerías CPU por GPU
| Componente | CPU | GPU |
|---|---|---|
| Audio | librosa | torchaudio (ROCm) |
| Video frames | cv2 | cv2 + OpenCL |
| Procesamiento | scipy | torch |
| Concatenación | moviepy | torch + ffmpeg |
[ ] MoviePy con GPU
MoviePy actualmente usa CPU. Opciones:
- Usar ffmpeg directamente con flags GPU
- Crear pipeline propio con torch
# ffmpeg con GPU
ffmpeg -hwaccel auto -i input.mp4 -c:v h264_amf output.mp4
PRIORIDAD 3: Mejorar Detección
[ ] Palabras Clave en Chat
Detectar momentos con keywords como:
- "LOL", "POG", "KEK", "RIP", "WTF"
- Emotes populares
- Mayúsculas (gritos en chat)
[ ] Análisis de Sentimiento
- Usar modelo de sentiment (torch)
- Detectar momentos positivos/negativos intensos
[ ] Ranking de Highlights
- Ordenar por intensidad (combinación de scores)
- Limitar a N mejores highlights
- Duration-aware scoring
PRIORIDAD 4: Kick
[ ] Descarga de Video
✅ Ya funciona con streamlink:
streamlink https://kick.com/streamer best -o video.mp4
[ ] Chat
❌ Kick NO tiene API pública para chat.
Opciones:
- Web scraping del chat
- Usar herramientas de terceros
- Omitir chat y usar solo audio/color
PRIORIDAD 5: Optimizaciones
[ ] Paralelización
- Procesar chunks del video en paralelo
- ThreadPool para I/O
[ ] Cache
- Guardar resultados intermedios
- Reutilizar análisis si existe chat.txt
[ ] Chunking
- Procesar video en segmentos
- Evitar cargar todo en memoria
PRIORIDAD 6: UX/UI
[ ] CLI Mejorada
python main.py --video-id 2701190361 --platform twitch \
--min-duration 10 --threshold 2.0 \
--output highlights.mp4 \
--use-gpu --gpu-device 0
[ ] Interfaz Web
- Streamlit app
- Subir video/chat
- Ver timeline de highlights
- Preview de clips
[ ] Progress Bars
- tqdm para descargas
- Progress para procesamiento
RECETAS DE INSTALACIÓN
GPU ROCm
# PyTorch con ROCm
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/rocm7.1
# Verificar
python -c "import torch; print(torch.cuda.is_available())"
NVIDIA CUDA (alternativa)
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121
OpenCV con OpenCL
# Verificar
python -c "import cv2; print(cv2.ocl.haveOpenCL())"
# Si False, instalar con GPU support
pip uninstall opencv-python-headless
pip install opencv-python
RENDIMIENTO ESPERADO
| Config | FPS Processing | Tiempo 5h Video |
|---|---|---|
| CPU (12 cores) | ~5-10 FPS | ~1-2 horas |
| GPU NVIDIA 3050 | ~30-50 FPS | ~10-20 min |
| GPU AMD 6800XT | ~30-40 FPS | ~15-25 min |
NOTAS
- ROCm 7.1 funcionando con PyTorch
- 6800XT detectada como "AMD Radeon Graphics"
- MoviePy sigue usando CPU para renderizado
- Para mejor rendimiento, considerar renderizado con ffmpeg GPU directamente