13 KiB
📺 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
- Abre el panel lateral (⚙️ Configuración)
- Para cada plataforma:
- Activa el switch "Habilitar esta plataforma"
- Ingresa tu Stream Key (obligatorio)
- (Opcional) Personaliza la RTMP URL
- 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:
- En la configuración de la plataforma
- Marca "Usar URL RTMP personalizada"
- Ingresa la URL completa:
rtmp://tu-servidor.com/live - Guarda los cambios
Usar con API Externa
Si tu API está en otro servidor:
- Edita el archivo
.env:
API_URL=https://api.tudominio.com
- 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:
stream_config.json: Configuración de plataformas
{
"platforms": {
"YouTube": {
"rtmp_url": "rtmp://...",
"stream_key": "xxxxx",
"enabled": true
}
}
}
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
}
}
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:
- El video no está EN VIVO (🔴)
- El video tiene restricciones geográficas
- 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:
- Que el video de YouTube siga en vivo
- Que la Stream Key sea correcta
- Los logs del proceso:
docker logs streamlit_panel
Problema: "Switch no responde"
Solución:
- Refresca la página (F5)
- Verifica que el API esté funcionando:
curl http://localhost:8080/docs
Problema: "Plataforma deshabilitada"
Verificar en la configuración:
- El switch "Habilitar esta plataforma" debe estar activo
- Debe tener Stream Key configurada
- 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
- YouTube Studio → Emisión en Vivo → Stream
- Facebook Creator Studio → Emisión en vivo
- Twitch Dashboard → Configuración del canal
- X Media Studio → Crear → En vivo
Documentación
🐛 Reportar Problemas
Si encuentras algún problema:
- Verifica los logs:
docker logs streamlit_panel
docker logs tubescript_api
-
Recopila información:
- Versión de Docker
- Sistema operativo
- Mensaje de error completo
-
Crea un issue con toda la información
📞 Soporte
- 📧 Email: soporte@tubescript.com
- 💬 Discord: TubeScript Community
- 📖 Docs: docs.tubescript.com
TubeScript Panel de Control © 2026
Desarrollado con ❤️ usando Streamlit y FastAPI