Files
twitch-highlight-detector/todo.md
ren fb8b390740 feat: Initial pipeline for Twitch highlight detection
- 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
2026-02-18 20:41:58 -03:00

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:

  1. Usar ffmpeg directamente con flags GPU
  2. 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:

  1. Web scraping del chat
  2. Usar herramientas de terceros
  3. 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

  1. ROCm 7.1 funcionando con PyTorch
  2. 6800XT detectada como "AMD Radeon Graphics"
  3. MoviePy sigue usando CPU para renderizado
  4. Para mejor rendimiento, considerar renderizado con ffmpeg GPU directamente