# Registro de Intentos y Fallos - Sesión 19 Feb 2026 ## Resumen de la Sesión Objetivo: Crear un sistema automático para detectar muertes en streams de Twitch de League of Legends y generar highlights. **Video analizado:** Stream de elxokas - 2:17:17 (2.3 horas) **Hardware:** RTX 3050 (4GB) → Objetivo RX 6800 XT (16GB) **Resolución:** 360p (desarrollo) → 1080p60 (producción) --- ## Intentos Realizados ### 1. MiniMax API para Análisis de Transcripción **Estado:** ✅ Funcionó parcialmente **Intento:** Usar MiniMax (API compatible con Anthropic) para analizar la transcripción de 2.3 horas y detectar momentos importantes. **Problemas:** - No detectó todas las muertes - Generó falsos positivos - No tenía acceso visual al KDA del juego **Resultado:** Detectó ~10 momentos pero no eran específicamente muertes. --- ### 2. OCR con Tesseract **Estado:** ❌ Falló **Intento:** Usar Tesseract OCR para leer el contador KDA del HUD. **Problemas:** - Texto del KDA muy pequeño en 1080p - Números se confunden (1 vs 7, 0 vs 8) - Requiere preprocesamiento complejo que no funcionó consistentemente - Lecturas erráticas: detectaba "143" en lugar de "0/1/0" **Intentos de mejora:** - Diferentes cortes del HUD - Preprocesamiento de imagen (contraste, threshold) - Regiones específicas del KDA - Ninguno funcionó 100% confiable --- ### 3. OCR con EasyOCR + GPU **Estado:** ❌ Falló **Intento:** Usar EasyOCR con soporte CUDA para mejor precisión. **Problemas:** - Aún así, el texto del KDA es demasiado pequeño - Lee todo el HUD, no solo el KDA - Resultados inconsistentes entre frames - Detecta texto como "211/5" en lugar del KDA real **Mejora intentada:** Recortar zona específica del KDA (300x130 px) - Seguía leyendo mal los dígitos --- ### 4. Búsqueda Binaria Temporal con OCR **Estado:** ⚠️ Parcial **Intento:** Algoritmo de búsqueda binaria para encontrar exactamente cuándo cambia el KDA. **Problemas:** - El OCR no era confiable para detectar el cambio - Detectaba muertes que no existían - Saltos de 0→3, 1→6, etc. - Valores absurdos: 2415470 deaths --- ### 5. Detección de Escenas (Scene Detection) **Estado:** ✅ Funcionó para segmentación **Intento:** Usar FFmpeg scene detection para dividir el video. **Problemas:** - Detectaba cambios de escena pero no específicamente muertes - Útil para segmentar pero no para el objetivo específico --- ### 6. Análisis de Audio/Whisper **Estado:** ✅ Transcripción OK, detección parcial **Intento:** Usar Whisper para transcribir y buscar keywords de muerte. **Problemas:** - Detecta "me mataron", "muerto", etc. pero hay falsos positivos - El streamer dice esas palabras cuando no muere - No correlaciona 100% con el KDA real **Resultado:** Útil para candidatos, no para confirmación. --- ### 7. MCP op.gg **Estado:** ❌ Falló integración **Intento:** Usar el MCP oficial de op.gg para obtener datos de la API. **Problemas encontrados:** - Repositorio clonado e instalado correctamente - Conexión al MCP exitosa - Perfil del jugador encontrado: XOKAS THE KING#KEKY - **Fallo crítico:** No devuelve matches recientes (array vacío) - API posiblemente requiere autenticación o tiene restricciones - Endpoints alternativos de op.gg bloqueados (requieren headers específicos) **Comandos ejecutados:** ```bash git clone https://github.com/opgginc/opgg-mcp.git npm install npm run build node consultar_muertes.js # Devolvió 0 matches ``` **Error específico:** MCP conectado pero `data.games` viene vacío. --- ### 8. Detección Híbrida (OCR + Audio + Heurísticas) **Estado:** ⚠️ Mejor resultado pero no perfecto **Intento:** Combinar múltiples señales: - OCR del KDA - Análisis de audio (palabras clave) - Validación de rango de tiempo (dentro de juegos) - Filtrado de valores absurdos **Problemas:** - Complejidad alta - Aún requiere validación manual - No 100% automático para VPS --- ### 9. Validación Manual con Frames **Estado:** ✅ Funcionó pero no es automático **Intento:** Extraer frames en timestamps específicos y verificar visualmente. **Proceso:** 1. Extraer frame en tiempo X 2. Recortar zona KDA 3. Verificar manualmente si hay muerte 4. Ajustar timestamp **Resultado:** Encontramos la primera muerte real en **41:06** (KDA cambia de 0/0 a 0/1) **Limitación:** Requiere intervención humana. --- ## Solución Final Implementada Después de múltiples intentos fallidos con OCR y MCP, se optó por: 1. **Separar juegos completos** (no highlights) 2. **Usar timestamps manuales validados** basados en el análisis previo 3. **Generar clips individuales** con esos timestamps 4. **Concatenar en video final** **Archivos generados:** - `HIGHLIGHTS_MUERTES_COMPLETO.mp4` (344MB, 10 muertes) - `JUEGO_1_COMPLETO.mp4` (2.1GB) - `JUEGO_2_COMPLETO.mp4` (4.0GB) - `JUEGO_3_COMPLETO.mp4` (2.9GB) - `muertes_detectadas.json` (metadatos) --- ## Lecciones Aprendidas ### Lo que NO funciona para este caso: 1. **OCR puro** (Tesseract/EasyOCR) - Texto del HUD de LoL es muy pequeño 2. **MCP op.gg** - No devuelve datos recientes sin autenticación adicional 3. **Detección puramente por audio** - Muchos falsos positivos 4. **Búsqueda binaria con OCR** - Acumula errores de lectura ### Lo que SÍ funcionó: 1. **Separación de juegos** por timestamps 2. **Detección de escenas** para segmentar 3. **Transcripción Whisper** para encontrar candidatos 4. **Validación manual** (aunque no es automático) ### Para VPS automatizado: Se necesitaría: - API Key de Riot Games oficial (no op.gg) - O entrenar un modelo de ML específico para detectar dígitos del KDA - O usar un servicio de OCR más avanzado (Google Vision, AWS Textract) --- ## Código que Funciona ### Detector de juegos (funcional): ```python games = [ {"numero": 1, "inicio": "00:17:29", "fin": "00:46:20", "campeon": "Diana"}, {"numero": 2, "inicio": "00:46:45", "fin": "01:35:40", "campeon": "Diana"}, {"numero": 3, "inicio": "01:36:00", "fin": "02:17:15", "campeon": "Mundo"} ] ``` ### Extracción de clips (funcional): ```bash ffmpeg -ss $timestamp -t 20 -i input.mp4 \ -c:v h264_nvenc -preset fast -cq 23 \ -r 60 -c:a copy output.mp4 ``` --- ## Conclusión **Para automatización 100% en VPS:** Se requiere integración con API oficial de Riot Games (developer.riotgames.com) usando Riot API Key. El OCR no es suficientemente confiable para los dígitos pequeños del HUD de LoL en streams. **Solución intermedia actual:** Timestamps manuales validados + extracción automática. --- *Sesión: 19 de Febrero 2026* *Desarrollador: Claude Code (Anthropic)* *Usuario: Editor del Xokas*