← Volver al inicio
Plataforma de Grabación y Streaming P2P
Sistema de gestión, automatización de grabaciones y servicio de contenidos P2P.
RESUMEN
Una plataforma integral diseñada para automatizar la captura, procesamiento y distribución de streams P2P. El sistema gestiona agendas de contenidos, programa grabaciones automáticas con FFmpeg, limpia y recorta el vídeo resultante, sincroniza el almacenamiento remoto vía rsync e integra la reproducción inmediata en servidores multimedia como Jellyfin o mediante listas M3U.
EL PROBLEMA
Proyecto nacido de una necesidad real: la imposibilidad de ver transmisiones en directo en tiempo real por compromisos personales y el deseo de poder disfrutarlas posteriormente en diferido con mi padre, sin conocer el resultado de antemano.
Los métodos manuales de grabación eran ineficientes, requerían interacción continua y consumían espacio excesivo en disco. Se necesitaba una solución 100% automatizada, desatendida y accesible desde cualquier dispositivo de la casa (Smart TV, PC, móvil) o de forma remota vía VPN.
ARQUITECTURA DEL SISTEMA
El sistema se organiza en varios dominios y microservicios orquestados mediante Docker Compose:
- Backend Principal (Flask 3.1): API monolítica modularizada por dominios (grabaciones, canales, agenda, enlaces, M3U, almacenamiento y notificaciones). Acceso directo a base de datos PostgreSQL 17 con psycopg2 crudo sin ORM para máximo rendimiento.
- Motor de Tareas Programadas (APScheduler): 11 tareas cron independientes para inicio de grabaciones, verificación de enlaces AceStream, limpieza de enlaces muertos y precaché de agendas.
- Proxy y Orquestador AceStream: Servicio proxy personalizado con auto-escalado dinámico de motores AceStream en contenedores.
- Microservicios de Scraping: Scrapers independientes en Docker para obtención continua de eventos y metadatos desde múltiples plataformas.
- Pipeline de Almacenamiento en 3 Fases:
- Detección: Identificación de grabaciones finalizadas.
- Recorte: Procesamiento de precisión con FFmpeg usando 4 puntos temporales.
- Transferencia: Envío automatizado por rsync sobre SSH a un servidor de almacenamiento secundario.
- Integración Multimedia (Jellyfin & M3U): Generación dinámica de playlist.m3u con flag de modificación (*dirty flag*) y actualización automática de la biblioteca de Jellyfin al concluir cada grabación.
STACK TECNOLÓGICO
- Lenguaje / Framework: Python 3.11+ / Flask 3.1
- Base de Datos: PostgreSQL 17 (psycopg2)
- Orquestación & Despliegue: Docker, Docker Compose, Nginx (Proxy inverso)
- Procesamiento de Vídeo: FFmpeg
- Planificación & Tareas: APScheduler
- Testing & Calidad: pytest, httpx (127 tests automatizados)
DECISIONES DE INGENIERÍA Y APRENDIZAJES
- SQL Nativo sobre ORM: Se optó por psycopg2 y SQL nativo en lugar de un ORM para tener control absoluto sobre el rendimiento de las consultas y la eficiencia en la base de datos PostgreSQL.
- Resiliencia en Redes P2P: Gestión del ciclo de vida de los enlaces AceStream con contadores de fallos consecutivos y purga automática de enlaces caídos.
- Eficiencia de Espacio: Reducción drástica del espacio consumido en disco gracias al pipeline automático de recorte en 3 fases previo al volcado remoto.