¿Qué es el streaming adaptativo?
El streaming adaptativo (ABR) ajusta automáticamente la calidad del vídeo según el ancho de banda disponible. En lugar de un archivo único, el servidor entrega fragmentos pequeños (2-10 s) y el reproductor elige la calidad óptima en cada momento. Elimina el buffering y garantiza la mejor calidad posible.
HLS — HTTP Live Streaming
Desarrollado por Apple en 2009, es el protocolo de streaming más usado en la web.
Características:
- HTTP-based: funciona con cualquier CDN o servidor web.
- Divide el vídeo en segmentos
.tso.fmp4. - Un archivo playlist
.m3u8lista los segmentos disponibles. - Compatible con prácticamente todos los dispositivos, incluyendo iOS y Safari de forma nativa.
Archivo master.m3u8:
#EXTM3U
#EXT-X-STREAM-INF:BANDWIDTH=5000000,RESOLUTION=1920x1080
1080p.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=2500000,RESOLUTION=1280x720
720p.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=800000,RESOLUTION=640x360
360p.m3u8
DASH — Dynamic Adaptive Streaming over HTTP
Estándar ISO alternativo a HLS. Manifiesto en formato MPD (XML). Más flexible: soporta H.264, H.265, VP9 y AV1. No soportado por Safari de forma nativa.
HLS vs DASH
| Característica | HLS | DASH |
|---|---|---|
| iOS/Safari | ✅ Nativo | ❌ Necesita biblioteca |
| Codecs | H.264, H.265 | H.264, H.265, VP9, AV1 |
| Latencia | Media (6-30 s) | Baja (con LL-DASH) |
Generar HLS con FFmpeg
ffmpeg -i entrada.mp4 \
-codec:v libx264 -crf 20 -preset fast \
-codec:a aac -b:a 128k \
-hls_time 6 -hls_playlist_type vod \
-hls_segment_filename "stream_%03d.ts" \
stream.m3u8
Reproductores web para HLS
Los navegadores no reproducen HLS/DASH nativamente (excepto Safari). Usa una biblioteca JavaScript:
| Reproductor | HLS | DASH | Licencia |
|---|---|---|---|
| hls.js | ✅ | ❌ | Apache 2.0 |
| Shaka Player | ✅ | ✅ | Apache 2.0 |
| Video.js | ✅ | ✅ | Apache 2.0 |
Conclusión
HLS para compatibilidad con iOS y Safari. DASH para más flexibilidad de codecs en entornos no Apple. En práctica, muchas plataformas sirven ambos. FFmpeg genera streams HLS directamente.
Casos de uso avanzados
Distribución multi-plataforma: cada red social tiene specs preferidas — YouTube acepta MP4 H.264 hasta 4K 60fps con AAC 384 kbps; Instagram Reels prefiere MP4 H.264 a 1080×1920 vertical; TikTok recomienda MP4 H.264/H.265 hasta 60 segundos con bitrate de 5-10 Mbps; LinkedIn limita a 5 GB y prefiere MP4 H.264. Convertir tu master a las specs exactas de cada plataforma antes del upload garantiza que la re-codificación interna del servidor (que siempre ocurre) parta de un input óptimo, preservando máxima calidad final. Edición profesional: editores como DaVinci Resolve, Premiere Pro y Final Cut Pro funcionan mejor con codecs intermedios (ProRes, DNxHD, CineForm) que con H.264 final-delivery — convertir tu material a un formato intermedio antes de editar acelera dramáticamente el render y evita generation loss en multi-track timelines. Streaming en vivo: OBS Studio y Streamlabs requieren input en H.264/H.265 con keyframes cada 2 segundos para HLS; convertir grabaciones a este preset facilita el uplink.
Mejores prácticas y consejos profesionales
Two-pass encoding vs CRF: para target file size específico (ej. "máximo 25 MB para WhatsApp") usa two-pass; para target quality usa CRF (Constant Rate Factor) con valores 18-23 para H.264, 22-28 para H.265 — son visually-lossless en condiciones normales. Audio passthrough: si tu video destino soporta el codec original de audio, usa stream copy (-c:a copy en FFmpeg) — preserva 100% de la calidad de audio sin re-codificación. Container vs codec: distingue entre container (MP4, MKV, MOV) y codec interno (H.264, H.265, AV1). Cambiar solo el container es una operación trivial sin re-encoding (segundos vs minutos para re-encode). HDR preservation: si tu source es HDR10/Dolby Vision, asegúrate que el destino también soporta HDR — convertir HDR a SDR pierde rango dinámico permanentemente. Frame rate: nunca aumentes frame rate (24→60 no añade información real); reducirlo (60→30) elimina frames sin pérdida visible para la mayoría del contenido.
Compatibilidad y consideraciones técnicas
KaijuConverter procesa video con FFmpeg 6.x compilado con todas las extensiones críticas: x264/x265 para encoding H.264/H.265 con presets configurables (ultrafast a veryslow, default medium para balance), libvpx-vp9 para WebM, SVT-AV1 para encoding moderno AV1 con soporte 10-bit color space, libfdk-aac para audio AAC, libopus para Opus. Soportamos archivos hasta 500 MB y resoluciones hasta 4K (3840×2160) a 60 fps. La pipeline cloud usa hardware acceleration cuando está disponible (NVENC/QuickSync) que acelera 5-10× respecto a CPU encoding. Tiempo de procesamiento: un video 1080p de 60 segundos típicamente se convierte en 12-30 segundos según codec destino y preset. Material 4K HDR puede requerir 2-5 minutos. Limitaciones: archivos protegidos con DRM (Netflix, Disney+, Amazon Prime, Apple TV+) no se pueden convertir — el DRM bloquea extracción del stream. Codecs propietarios muy específicos (RED RAW, ARRI Alexa raw, Sony X-OCN) requieren software dedicado. Privacidad: video se cifra en tránsito (TLS 1.3), se procesa en contenedores Docker aislados, se elimina automáticamente tras 2 horas con multi-pass overwrite seguro.
Conversiones relacionadas
Conversiones de vídeo que encajan con esta guía: