Skip to content

raanariba/benchmarkVideoServer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Benchmark Video Server (HLS)

Servidor de benchmark local para comparar el rendimiento de servicios de conversion de video a HLS (HTTP Live Streaming), sin modificar los backends evaluados.

El benchmark mide tiempo de ejecucion, uso de CPU, uso de RAM, y permite reproducir el HLS generado desde una interfaz web. Si el backend expone metrica de GPU, tambien se muestra en la tabla.

Objetivo

  • Comparar tiempos reales de conversion a HLS
  • Medir uso de recursos del sistema (CPU / RAM / GPU opcional)
  • Evaluar diferencias entre implementaciones
  • Mantener los servicios evaluados independientes

Requisitos

  • Python 3.10+
  • FFmpeg instalado y accesible desde PATH

Instalar dependencias:

pip install -r requirements.txt

Servicios de video

Antes de ejecutar el benchmark, deben estar levantados los servicios a evaluar:

Servicio Puerto
Python Video Server 8000
NestJS Video Server 3000

Configuracion

Los backends evaluados se definen en backend/config.py:

TARGETS = {
    "python": "http://<IP>:8000/videos",
    "nest": "http://<IP>:3000/videos",
}

STREAM_BASE = {
    "python": "http://<IP>:8000",
    "nest": "http://<IP>:3000",
}

Ejecucion

Levantar el servidor del benchmark:

uvicorn backend.main:app --reload --port 5050

Abrir en el navegador:

http://localhost:5050

UI y resultados

La interfaz muestra una tabla por ejecucion con:

  • Backend
  • Video
  • Tiempo total
  • CPU (peak)
  • GPU (peak) si esta disponible
  • RAM (peak)
  • Cores
  • Boton para reproducir el HLS

GPU (opcional)

Si el backend de Python retorna alguna de estas claves en metrics, la UI la mostrara en la columna GPU:

  • gpu_peak_percent
  • gpu_peak_utilization
  • gpu_peak

Ejemplo de respuesta:

{
  "backend": "python",
  "video": "input.mp4",
  "elapsed": 12.345,
  "elapsed_human": "0m 12.35s",
  "playlist": "http://localhost:8000/streams/output.m3u8",
  "metrics": {
    "cpu_peak_percent": 87.5,
    "memory_peak_mb": 1024.8,
    "cpu_cores": 8,
    "gpu_peak_percent": 65.2
  }
}

Para obtener esta metrica en el benchmark, el servidor intenta leer el uso de GPU via nvidia-smi (NVIDIA). Si nvidia-smi no esta disponible o no hay GPU, la columna GPU queda en -.

Estructura del proyecto

benchmarkVideoServer/
|-- backend/
|   |-- main.py
|   |-- config.py
|   |-- runner.py
|   |-- metrics.py
|   |-- log_service.py
|-- frontend/
|   |-- index.html
|-- logs/
|-- requirements.txt
|-- README.md

📜 Licencia

Proyecto experimental / educativo. Uso interno para pruebas de rendimiento.

  • Redacción técnica más clara
  • Mejor separación visual en GitHub
  • GPU explicada sin sobrecargar
  • Consistencia de términos (benchmark, backend, métricas)
  • Listo para crecer a Docker / GPU sin reescribirlo

About

test distintos servicios de videos (proyecto test)

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors