Start typing to search across invoices, services, domains, tickets, and more...
El backend de una plataforma de vídeo bajo demanda (VOD) o de vídeos cortos necesita cuatro piezas: servidores dedicados de almacenamiento para originales y renditions, un pipeline de transcodificación con ffmpeg que genere escaleras de bitrate HLS, almacenamiento de objetos compatible con S3 como MinIO y una CDN que asuma la mayor parte del ancho de banda. IMIDC ofrece esa infraestructura en Hong Kong (CN2 GIA a China continental), Tokio, Singapur, Los Ángeles y otras ubicaciones de Asia: dedicados en Hong Kong desde $139/mes, dedicados en Los Ángeles desde $499/mes, uplinks de 10 Gbps, protección DDoS y la CDN de IMIDC.
Toda plataforma de vídeo sigue el mismo pipeline: subida, guardado del original, transcodificación, guardado de renditions y entrega por CDN.
master.m3u8 desde la CDN, que pide al origen los segmentos que le faltan.Guarda los metadatos (títulos, autores, visualizaciones, estado de moderación) en una base de datos normal en un servidor API, y los bytes en servidores de almacenamiento.
Codifica cada vídeo una vez en varias resoluciones con fotogramas clave alineados para que el reproductor cambie de calidad sin saltos.
mkdir -p out/v0 out/v1 out/v2 out/v3
ffmpeg -i input.mp4 \
-filter_complex "[0:v]split=4[a][b][c][d];[a]scale=-2:1080[v0];[b]scale=-2:720[v1];[c]scale=-2:480[v2];[d]scale=-2:360[v3]" \
-map "[v0]" -c:v:0 libx264 -b:v:0 5000k -maxrate:v:0 5350k -bufsize:v:0 7500k \
-map "[v1]" -c:v:1 libx264 -b:v:1 2800k -maxrate:v:1 3000k -bufsize:v:1 4200k \
-map "[v2]" -c:v:2 libx264 -b:v:2 1400k -maxrate:v:2 1500k -bufsize:v:2 2100k \
-map "[v3]" -c:v:3 libx264 -b:v:3 800k -maxrate:v:3 856k -bufsize:v:3 1200k \
-map a:0 -map a:0 -map a:0 -map a:0 -c:a aac -b:a 128k -ac 2 \
-preset medium -profile:v high -pix_fmt yuv420p \
-force_key_frames "expr:gte(t,n_forced*2)" -sc_threshold 0 \
-f hls -hls_time 4 -hls_playlist_type vod -hls_flags independent_segments \
-hls_segment_filename "out/v%v/seg_%04d.ts" \
-master_pl_name master.m3u8 \
-var_stream_map "v:0,a:0 v:1,a:1 v:2,a:2 v:3,a:3" \
out/v%v/index.m3u8
| Rendition | Resolución (16:9) | Bitrate de vídeo | Audio | Espectador típico |
|---|---|---|---|---|
| 1080p | 1920x1080 | 5.000 kbps | AAC 128 kbps | Escritorio, TV, Wi-Fi |
| 720p | 1280x720 | 2.800 kbps | AAC 128 kbps | Móviles con buen 4G/5G |
| 480p | 854x480 | 1.400 kbps | AAC 128 kbps | Redes móviles congestionadas |
| 360p | 640x360 | 800 kbps | AAC 128 kbps | Señal débil, modo ahorro de datos |
-force_key_frames "expr:gte(t,n_forced*2)" coloca un fotograma clave cada 2 segundos sea cual sea la tasa de fotogramas, y -sc_threshold 0 los mantiene alineados entre renditions.Las apps de vídeo corto dependen del tiempo hasta el primer fotograma, así que usa segmentos pequeños, una escalera corta y vistas previas precargadas.
# vertical short video: 3-step ladder, 2 s segments for a fast first frame
ffmpeg -i clip.mp4 \
-filter_complex "[0:v]split=3[a][b][c];[a]scale=1080:-2[v0];[b]scale=720:-2[v1];[c]scale=540:-2[v2]" \
-map "[v0]" -c:v:0 libx264 -b:v:0 3500k -maxrate:v:0 3750k -bufsize:v:0 5000k \
-map "[v1]" -c:v:1 libx264 -b:v:1 2000k -maxrate:v:1 2150k -bufsize:v:1 3000k \
-map "[v2]" -c:v:2 libx264 -b:v:2 1000k -maxrate:v:2 1070k -bufsize:v:2 1500k \
-map a:0 -map a:0 -map a:0 -c:a aac -b:a 96k \
-preset medium -force_key_frames "expr:gte(t,n_forced*2)" -sc_threshold 0 \
-f hls -hls_time 2 -hls_playlist_type vod \
-hls_segment_filename "short/v%v/seg_%03d.ts" -master_pl_name master.m3u8 \
-var_stream_map "v:0,a:0 v:1,a:1 v:2,a:2" short/v%v/index.m3u8
# cover image and a small progressive MP4 preview for feeds
ffmpeg -ss 1 -i clip.mp4 -frames:v 1 -vf scale=540:-2 short/cover.jpg
ffmpeg -i clip.mp4 -t 6 -vf scale=360:-2 -c:v libx264 -b:v 400k -an -movflags +faststart short/preview.mp4
Guarda las renditions en almacenamiento de objetos compatible con S3 sobre servidores dedicados y organiza los datos por frecuencia de visualización.
# single-node MinIO on a storage dedicated server (use distributed mode across 4+ servers for HA)
docker run -d --name minio --restart unless-stopped \
-p 9000:9000 -p 9001:9001 \
-v /data/minio:/data \
-e MINIO_ROOT_USER=vodadmin \
-e MINIO_ROOT_PASSWORD=replace-with-a-long-random-secret \
minio/minio server /data --console-address ":9001"
# buckets: raw uploads (private) and hls output (public read via CDN)
mc alias set vod http://127.0.0.1:9000 vodadmin replace-with-a-long-random-secret
mc mb vod/raw
mc mb vod/hls
mc anonymous set download vod/hls
mc ilm rule add vod/raw --expire-days 180 # drop raw uploads after 180 days
mc mirror --overwrite out/ vod/hls/videos/abc123/
MinIO se distribuye bajo AGPLv3 y su edición comunitaria ha cambiado con el tiempo, así que revisa la edición y la licencia vigentes antes de usarlo en producción; SeaweedFS, Garage y Ceph RGW son otras opciones compatibles con S3. En este ejemplo el bucket raw es solo una zona temporal de subida; guarda el original o un archivo mezzanine de alta calidad en almacenamiento frío para poder retranscodificar más adelante.
| Nivel | Qué contiene | Hardware | Patrón de acceso |
|---|---|---|---|
| Caliente | Renditions de vídeos nuevos y en tendencia | Servidores de almacenamiento NVMe/SSD | Peticiones constantes de la CDN |
| Templado | Renditions del catálogo de cola larga | Dedicados con RAID de HDD grande o erasure coding | Peticiones ocasionales, fallos de caché de la CDN |
| Frío | Originales y archivos mezzanine | Servidores HDD de alta capacidad o chasis propios en colocation | Solo lectura para retranscodificar |
Cálculo aproximado: la escalera de 4 escalones anterior suma unos 10,5 Mbps, es decir, unos 79 MB por minuto de vídeo. 1.000 horas de contenido ocupan unos 4,7 TB de renditions, más los originales.
El mayor coste recurrente de una plataforma de vídeo es el ancho de banda, no el almacenamiento, así que estímalo antes de elegir servidores.
| Espectadores activos diarios | Tiempo de visionado por espectador | Bitrate medio entregado | Entrega mensual |
|---|---|---|---|
| 1.000 | 20 min | 1,5 Mbps | unos 6,75 TB |
| 10.000 | 20 min | 1,5 Mbps | unos 67,5 TB |
| 50.000 (vídeo corto) | 30 min | 1,2 Mbps | unos 405 TB |
| 100.000 | 20 min | 1,5 Mbps | unos 675 TB |
Cache-Control largo y versiona las rutas en lugar de purgar.Coloca los orígenes donde están tus espectadores y donde las rutas hacia ellos son más sólidas.
| Ubicación | Mejor audiencia | Rutas e IPs |
|---|---|---|
| Hong Kong | China continental, Hong Kong, usuarios de habla china | China Telecom CN2 GIA (AS4809); el alojamiento no requiere registro ICP |
| Tokio, Japón | Japón, Corea del Sur | IPs nativas japonesas; opción de ruta CN2 optimizada para China en VPS |
| Singapur | Sudeste asiático, India, Oceanía | Se configura bajo pedido vía ventas |
| Los Ángeles, EE. UU. | América, y usuarios de China por rutas premium | Rutas Unicom 9929/4837 y CN2 |
| Taipéi / Bangkok / Kuala Lumpur | Plataformas de un solo mercado | IPs nativas locales |
Muchas plataformas usan un único origen principal (a menudo Hong Kong o Tokio) detrás de la CDN y solo añaden un segundo origen cuando los fallos de caché desde una región lejana se vuelven lentos.
Una plataforma de vídeo es responsable de gestionar lo que suben sus usuarios, así que integra el cumplimiento en el pipeline desde el primer día.
Empieza con un origen y una CDN, y separa transcodificación y almacenamiento a medida que crece la biblioteca.
Como mínimo, servidores API, workers de transcodificación con ffmpeg, almacenamiento compatible con S3 como MinIO en servidores dedicados de almacenamiento y una CDN. IMIDC ofrece servidores dedicados en Hong Kong, Tokio, Los Ángeles y otras ubicaciones de Asia, además de la CDN de IMIDC para este stack.
Elige Hong Kong si muchos espectadores están en China continental, porque los servidores de IMIDC en Hong Kong usan China Telecom CN2 GIA y el alojamiento no requiere registro ICP. Elige Singapur para el Sudeste asiático y Tokio para Japón y Corea; IMIDC configura los servidores de Singapur bajo pedido a través de ventas.
Multiplica espectadores por minutos de visionado y bitrate medio: 10.000 espectadores diarios viendo 20 minutos a 1,5 Mbps consumen unos 67,5 TB al mes. La CDN debería entregar la mayor parte para que el origen solo atienda los fallos de caché.
MinIO es un almacenamiento compatible con S3 muy utilizado que funciona bien para segmentos HLS y originales en servidores dedicados. Revisa antes su licencia y edición actuales; SeaweedFS, Garage y Ceph RGW son alternativas.
No. La codificación por CPU con ffmpeg en dedicados con muchos núcleos ofrece la mejor calidad por bit y escala con facilidad. Las GPU aceleran grandes volúmenes de subidas; consulta con ventas de IMIDC las configuraciones con GPU o muchos núcleos.
¿Listo para construir tu plataforma de vídeo? Consulta los servidores dedicados en Hong Kong y la CDN de IMIDC, o abre un ticket y los ingenieros de IMIDC te ayudarán a planificar almacenamiento, transcodificación y entrega.