# 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):** ```python 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:** ```python 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 ```bash # 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 ```bash # 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: ```bash 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 ```bash 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 ```bash # 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) ```bash pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121 ``` ### OpenCV con OpenCL ```bash # 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