- Agregado intentos.md con registro de todos los fallos - Actualizado contexto.md con sesión de noche - MCP op.gg instalado (no funcionó - 0 matches) - OCR con Tesseract y EasyOCR (falló - texto muy pequeño) - Video final generado: HIGHLIGHTS_MUERTES_COMPLETO.mp4 - Juegos separados: JUEGO_1/2/3_COMPLETO.mp4 - 10 muertes secuenciales: 0/1→0/10 - Scripts de extracción automática con timestamps
6.5 KiB
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:
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:
- Extraer frame en tiempo X
- Recortar zona KDA
- Verificar manualmente si hay muerte
- 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:
- Separar juegos completos (no highlights)
- Usar timestamps manuales validados basados en el análisis previo
- Generar clips individuales con esos timestamps
- 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:
- OCR puro (Tesseract/EasyOCR) - Texto del HUD de LoL es muy pequeño
- MCP op.gg - No devuelve datos recientes sin autenticación adicional
- Detección puramente por audio - Muchos falsos positivos
- Búsqueda binaria con OCR - Acumula errores de lectura
Lo que SÍ funcionó:
- Separación de juegos por timestamps
- Detección de escenas para segmentar
- Transcripción Whisper para encontrar candidatos
- 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):
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):
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