TubeScript-API/PANEL_STREAMLIT_GUIA.md

14 KiB
Raw Permalink Blame History

Nota: Streamlit eliminado

El panel Streamlit fue eliminado en esta rama; este documento se mantiene solo como referencia histórica. Usa la API (main.py) para operar.

📺 TubeScript - Panel de Control Web

Panel de control web interactivo para gestionar transmisiones en vivo desde YouTube hacia múltiples plataformas de redes sociales simultáneamente.

🎯 Características Principales

Funcionalidades

  • 🔍 Búsqueda de Videos en Vivo: Busca transmisiones en vivo de YouTube por palabra clave
  • 📺 Preview de Video: Visualiza el video seleccionado con miniatura y datos del canal
  • 🎛️ Control Multi-Plataforma: Gestiona transmisiones a múltiples redes sociales simultáneamente
  • 🔴 Switches de Activación: Controles tipo toggle para iniciar/detener transmisiones por plataforma
  • 📊 Monitoreo en Tiempo Real: Visualiza el estado de cada transmisión con semáforos de estado
  • 🔍 Seguimiento de PIDs: Monitorea los procesos FFmpeg activos con sus identificadores
  • ⚙️ Configuración Fácil: Panel lateral intuitivo para configurar cada plataforma

🖥️ Interfaz del Usuario

1. Barra Lateral - Configuración de Plataformas

⚙️ CONFIGURACIÓN
├── Plataformas de Streaming
│   ├── YouTube
│   │   ├── [Switch] Habilitar esta plataforma
│   │   ├── 🔑 Stream Key (Requerido)
│   │   └── 🌐 RTMP URL (Opcional)
│   ├── Facebook
│   ├── Twitch
│   ├── X (Twitter)
│   ├── Instagram
│   └── TikTok
└── [Botón] 💾 Guardar Configuración

URLs RTMP por Defecto:

  • YouTube: rtmp://a.rtmp.youtube.com/live2
  • Facebook: rtmps://live-api-s.facebook.com:443/rtmp/
  • Twitch: rtmp://live.twitch.tv/app
  • X (Twitter): rtmps://fa.contribute.live-video.net/app
  • Instagram: rtmps://live-upload.instagram.com:443/rtmp/
  • TikTok: rtmp://push.live.tiktok.com/live/

2. Pestaña: 🔍 Búsqueda

Funcionalidades:

  • Buscar videos en vivo por palabra clave
  • Ingresar URL directa de YouTube
  • Ver resultados con título y canal
  • Seleccionar video para transmitir

Ejemplo de búsqueda:

🔍 Buscar Video en Vivo
[Buscar transmisión en vivo de YouTube] [🔍 Buscar]

O ingresa la URL directa del video
[https://www.youtube.com/watch?v=...]

3. Pestaña: 🎛️ Control

Vista Principal:

📺 Video Seleccionado
┌─────────────────────────────────────┐
│ [Miniatura]  Título del Video      │
│              Canal: NombreCanal     │
│              🔴 EN VIVO             │
└─────────────────────────────────────┘

🎯 Plataformas Configuradas (3)
[▶️ Iniciar Todas las Transmisiones]
[⏹️ Detener Todas las Transmisiones]
[Transmitiendo: 2/3]

📋 Redes Habilitadas y Listas para Transmitir
┌──────────────┬──────────┬─────┬────────────┬──────────────┐
│ Red Social   │ Estado   │ PID │ Habilitada │ Configurada  │
├──────────────┼──────────┼─────┼────────────┼──────────────┤
│ YouTube      │ 🟢 Activo│ 1234│ ✅ Sí      │ ✅ Sí        │
│ Facebook     │ 🟢 Activo│ 1235│ ✅ Sí      │ ✅ Sí        │
│ Twitch       │ ⚪ Listo │  -  │ ✅ Sí      │ ✅ Sí        │
└──────────────┴──────────┴─────┴────────────┴──────────────┘

Tarjetas de Control Individual:

┌─────────────────────────────────────┐
│ 🎥 YouTube          🟢      PID: 1234│
│                                      │
│ Estado: TRANSMITIENDO                │
│ Transmisión activa (PID: 1234)       │
│                                      │
│ [🔴] Transmitir a YouTube            │
│                                      │
│ ⏱️ Tiempo Activo    🔍 Proceso       │
│    00:15:32           ✅ Activo      │
│                                      │
│  Detalles de Configuración ▼       │
└─────────────────────────────────────┘

4. Pestaña: 📊 Monitor

Monitoreo en Tiempo Real:

  • Auto-refresh cada 5 segundos
  • Resumen general de todas las transmisiones
  • Detalle por plataforma con métricas
  • Verificación de estado de procesos (PIDs)
📈 Resumen General
┌──────────────┬──────────┬────────────┬─────────────┐
│ Total Trans. │ 🟢 Activas│ 🔴 Errores │ ⚪ Detenidas│
│      3       │     2     │      0     │      1      │
└──────────────┴──────────┴────────────┴─────────────┘

🔍 Detalle por Plataforma
┌─────────────────────────────────────┐
│ 🟢 YouTube                 [⏹️ Det.] │
│ PID: 1234                            │
│ Transmisión activa (PID: 1234)       │
│                                      │
│ ⏱️ 00:15:32  ✅ Vivo  🕐 14:30:00    │
│                                      │
│  Información Técnica ▼             │
└─────────────────────────────────────┘

🎨 Semáforos de Estado

Los semáforos indican el estado de cada transmisión en tiempo real:

Semáforo Estado Descripción
🟢 TRANSMITIENDO La transmisión está activa y funcionando correctamente
LISTO La plataforma está configurada pero no está transmitiendo
🔴 ERROR Hubo un error en la transmisión o el proceso se detuvo
⚠️ DESHABILITADA La plataforma está configurada pero deshabilitada

🔄 Flujo de Trabajo Completo

Paso 1: Configurar Plataformas

  1. Abre el panel lateral (⚙️ Configuración)
  2. Para cada plataforma:
    • Activa el switch "Habilitar esta plataforma"
    • Ingresa tu Stream Key (obligatorio)
    • (Opcional) Personaliza la RTMP URL
  3. Haz clic en "💾 Guardar Configuración"

Paso 2: Buscar Video en Vivo

Ve a la pestaña 🔍 Búsqueda y:

Opción A: Buscar por palabra clave

1. Escribe: "noticias" o "gaming"
2. Clic en "🔍 Buscar"
3. Selecciona un video de los resultados

Opción B: URL directa

1. Pega la URL completa: https://www.youtube.com/watch?v=VIDEO_ID
2. El sistema la detectará automáticamente

Paso 3: Iniciar Transmisiones

Ve a la pestaña 🎛️ Control:

Opción A: Iniciar todas

1. Clic en "▶️ Iniciar Todas las Transmisiones"
2. Todas las plataformas habilitadas comenzarán a transmitir

Opción B: Iniciar individualmente

1. Busca la tarjeta de la plataforma deseada
2. Activa el switch "🔴 Transmitir a [Plataforma]"
3. La transmisión comenzará en esa plataforma

Paso 4: Monitorear Transmisiones

Ve a la pestaña 📊 Monitor:

  • El panel se actualiza automáticamente cada 5 segundos
  • Verás el PID de cada proceso FFmpeg
  • Tiempo activo de cada transmisión
  • Estado del proceso ( Vivo / Muerto)

Paso 5: Detener Transmisiones

Opción A: Detener todas

En la pestaña Control:
Clic en "⏹️ Detener Todas las Transmisiones"

Opción B: Detener individualmente

1. Desactiva el switch de la plataforma, O
2. En la pestaña Monitor, clic en "⏹️ Detener"

🔧 Configuración Avanzada

Personalizar RTMP URL

Por defecto, cada plataforma tiene una URL RTMP predefinida. Si necesitas usar un servidor personalizado:

  1. En la configuración de la plataforma
  2. Marca "Usar URL RTMP personalizada"
  3. Ingresa la URL completa: rtmp://tu-servidor.com/live
  4. Guarda los cambios

Usar con API Externa

Si tu API está en otro servidor:

  1. Edita el archivo .env:
API_URL=https://api.tudominio.com
  1. Reinicia el contenedor:
docker-compose restart streamlit-panel

🎯 Características Técnicas

Gestión de Procesos

El panel gestiona procesos FFmpeg en segundo plano:

Comando FFmpeg usado:

ffmpeg -re -i "URL_M3U8" -c copy -f flv RTMP_URL/STREAM_KEY

Parámetros:

  • -re: Lee el input a velocidad nativa (importante para streaming)
  • -i: URL m3u8 obtenida de YouTube
  • -c copy: Copia sin recodificar (menor latencia y CPU)
  • -f flv: Formato FLV para RTMP

Almacenamiento de Datos

El sistema guarda tres archivos JSON:

  1. stream_config.json: Configuración de plataformas
{
  "platforms": {
    "YouTube": {
      "rtmp_url": "rtmp://...",
      "stream_key": "xxxxx",
      "enabled": true
    }
  }
}
  1. process_state.json: Estado de procesos activos
{
  "YouTube": {
    "pid": 1234,
    "platform": "YouTube",
    "start_time": "2026-01-30T14:30:00",
    "status": "running",
    "rtmp_url": "rtmp://...",
    "enabled": true
  }
}
  1. streams_state.json: Estado de transmisiones

Verificación de PIDs

El sistema verifica constantemente que los procesos FFmpeg estén vivos:

def check_process_alive(pid):
    try:
        os.kill(pid, 0)  # Señal 0 = verificar existencia
        return True
    except OSError:
        return False

🛠️ Solución de Problemas

Problema: "No se pudo obtener la URL del stream"

Posibles causas:

  1. El video no está EN VIVO (🔴)
  2. El video tiene restricciones geográficas
  3. yt-dlp está desactualizado

Soluciones:

# Actualizar yt-dlp en el contenedor
docker exec streamlit_panel pip install --upgrade yt-dlp

# O reconstruir contenedor
docker-compose down
docker-compose build --no-cache
docker-compose up -d

Problema: "La transmisión se detuvo"

Verificar:

  1. Que el video de YouTube siga en vivo
  2. Que la Stream Key sea correcta
  3. Los logs del proceso:
docker logs streamlit_panel

Problema: "Switch no responde"

Solución:

  1. Refresca la página (F5)
  2. Verifica que el API esté funcionando:
curl http://localhost:8080/docs

Problema: "Plataforma deshabilitada"

Verificar en la configuración:

  1. El switch "Habilitar esta plataforma" debe estar activo
  2. Debe tener Stream Key configurada
  3. Debe tener RTMP URL configurada

📊 Métricas y KPIs

El panel proporciona las siguientes métricas en tiempo real:

Métrica Descripción Ubicación
Total Plataformas Número de plataformas configuradas Control
Transmitiendo Cuántas están activas Control/Monitor
Listas Configuradas pero inactivas Control
Errores Con problemas Control/Monitor
Tiempo Activo Duración de cada transmisión Control/Monitor
Estado del Proceso Si el PID está vivo Monitor
PID Identificador del proceso FFmpeg Control/Monitor

🔐 Seguridad

Stream Keys

  • Los Stream Keys se almacenan en stream_config.json
  • En la interfaz solo se muestran los últimos 4 caracteres
  • No se registran en logs

Volúmenes Docker

volumes:
  - ./stream_config.json:/app/stream_config.json  # Configuración
  - ./cookies.txt:/app/cookies.txt:ro             # Solo lectura

Variables de Entorno

environment:
  - API_URL=${API_URL}           # URL del API
  - PYTHONUNBUFFERED=1           # Logs en tiempo real

📝 Requisitos del Sistema

Mínimos

  • RAM: 2 GB
  • CPU: 2 cores
  • Disco: 5 GB
  • Red: 10 Mbps upload por transmisión

Recomendados

  • RAM: 4 GB
  • CPU: 4 cores
  • Disco: 10 GB SSD
  • Red: 25 Mbps upload por transmisión

🚀 Próximas Funcionalidades

  • Programación de transmisiones
  • Grabación local simultánea
  • Estadísticas de ancho de banda
  • Alertas por email/Telegram
  • Múltiples fuentes de video
  • Overlays y filtros en tiempo real
  • Soporte para OBS Studio

📚 Recursos Adicionales

Obtener Stream Keys

Documentación


🐛 Reportar Problemas

Si encuentras algún problema:

  1. Verifica los logs:
docker logs streamlit_panel
docker logs tubescript_api
  1. Recopila información:

    • Versión de Docker
    • Sistema operativo
    • Mensaje de error completo
  2. Crea un issue con toda la información


📞 Soporte


TubeScript Panel de Control © 2026
Desarrollado con ❤️ usando Streamlit y FastAPI