Por qué un MP4 no se reproduce y qué es en realidad un contenedor

En qué se diferencian los contenedores como MP4 y MKV de los códecs como H.264 y AV1, y cómo el bitrate, los fotogramas clave, las pistas de audio y la recodificación deciden si un archivo se reproduce y cuánto ocupa.

Un MP4 que no se reproduce rara vez está dañado. La extensión solo nombra el contenedor, la envoltura que guarda los flujos y sus marcas de tiempo. Lo que hay que decodificar es el códec de dentro, y un mismo .mp4 puede llevar H.264, que se reproduce en un teléfono de hace diez años, o AV1, que un televisor de hace dos no puede ni tocar. Por eso un MP4 se reproduce y otro no.

A cualquier archivo de vídeo se le aplican dos preguntas: en qué caja está y cómo está comprimida la imagen. Cambiar la caja suele salir gratis; cambiar la compresión no sale gratis nunca.

El contenedor es la caja, el códec es la imagen

ContenedorCódecs de vídeoAudioCompatibilidad
MP4H.264, H.265, algo de AV1AAC, MP3En todas partes
WebMVP8, VP9, AV1Opus, VorbisSolo navegadores
MKVCasi cualquier cosaAC-3, DTS, cualquier cosaReproductores de escritorio, no navegadores
MOVH.264, H.265, ProResAAC, PCMApple, edición
AVIDivX, Xvid, MJPEGMP3, PCMWindows antiguo

MKV es el permisivo: bueno para archivar y malo para entregar, porque un MKV válido puede contener una combinación que ningún navegador va a abrir. MOV y MP4 comparten la mayor parte de su estructura, así que pasar de uno a otro suele ser solo reescribir el índice. Inspecciona el archivo:

input.mp4
  Stream #0:0  Video  h264 (High)   1920x1080  30 fps  4200 kb/s
  Stream #0:1  Audio  aac  (LC)     48000 Hz   stereo   128 kb/s

La palabra que va después de «Video» es la que importa. La palabra «mp4» no te dice casi nada.

Qué códec se reproduce dónde

CódecBits para la misma calidadLicenciasCompatibilidad
H.264 (AVC)La referencia, digamos el 100%Consorcio de patentes, licenciado casi en todas partesUniversal
H.265 (HEVC)50 a 65%Consorcios rivales, caro, sin resolverEn Apple sí, en navegadores irregular
VP9Parecido a H.265Libre de regalíasChrome, Firefox, Edge, Android
AV130 a 50%Libre de regalíasNavegadores actuales, hardware reciente

H.265 es fuerte técnicamente e incómodo comercialmente, así que la compatibilidad se divide por fabricantes más que por criterios técnicos. AV1 es el que mejor comprime y el que codifica mucho más despacio, a veces en un orden de magnitud, así que encaja con vídeo que se codifica una vez y se ve muchas. Para un público desconocido, H.264 dentro de MP4 sigue siendo la respuesta, y el compresor de vídeo apunta a ella.

Bitrate, resolución y frecuencia de fotogramas

El bitrate son los bits por segundo de la salida, y él solo fija el tamaño del archivo: multiplícalo por la duración y ya tienes el archivo.

1920 x 1080 x 30 fps x 3 bytes = about 186 MB per second raw
delivered at 4 Mb/s            = about 0.5 MB per second

Duplicar la resolución cuadruplica el número de píxeles, pero no los bits necesarios, porque los píxeles vecinos de un fotograma más grande se parecen más entre sí y comprimen mejor. Cuenta con dos o tres veces más, así que reducir a la mitad el ancho y el alto es una de las maneras más baratas de encoger un archivo: eso es redimensionar el vídeo, y recortarlo descarta píxeles directamente. La frecuencia de fotogramas es más suave, y añade entre un 20 y un 40% al pasar de 30 a 60, no un 100%; cambiar la velocidad del vídeo acorta la línea de tiempo en su lugar.

Hay tres formas de controlar la tasa:

  • Bitrate constante: mantiene una sola tasa de principio a fin, así que los planos estáticos desperdician bits y el movimiento rápido se deshace. Encaja con enlaces que tienen un techo estricto.
  • Bitrate variable con un objetivo: promedia, y deja que unas escenas tomen prestado de otras. El tamaño es predecible, así que úsalo cuando la salida tenga que caber en un límite.
  • Calidad constante, normalmente un valor de CRF: fija la calidad y deja que el bitrate vaya donde haga falta. El tamaño es impredecible, la calidad es uniforme, y es la opción por defecto para todo lo que se ve en vez de emitirse.

En H.264 la escala CRF va de 0 a 51, y cuanto más bajo, mejor: 18 es casi indistinguible del original, 23 es un valor por defecto sensato y a partir de 28 el movimiento se deshace. La escala no es la misma entre códecs.

Fotogramas clave, y por qué a veces recortar sale gratis

Un fotograma I, o fotograma clave, es una imagen completa que se decodifica por sí sola. Un fotograma P guarda solo lo que cambió respecto a un fotograma anterior. Un fotograma B predice a partir de un fotograma anterior y de uno posterior, que es lo que mejor comprime y la razón por la que a veces los decodificadores retienen fotogramas antes de mostrarlos.

Un fotograma clave junto con los que dependen de él forma un grupo de imágenes, y los codificadores para web colocan uno cada dos segundos aproximadamente. Corta a mitad de grupo y los fotogramas que sobreviven harán referencia a una imagen que ya no está en el archivo, y por eso recortar tiene dos modos. Copiar los flujos es instantáneo y sin pérdidas, pero solo cae en un fotograma clave, así que el inicio puede desplazarse hasta la longitud del grupo; recodificar coloca un fotograma clave donde tú lo pediste, a cambio de tiempo y de calidad. La herramienta de recorte de vídeo ofrece los dos modos; copia salvo que importe el fotograma exacto.

Recodificar cuesta calidad porque cada pasada con pérdidas descarta lo que el modelo considera menos visible. Codifica otra vez y la segunda pasada tratará los artefactos de la primera como detalle real, los conservará y añadirá los suyos, así que el error se acumula de generación en generación. Copia los flujos cuando lo único que cambia es el contenedor, y copia la imagen cuando lo único que se va es el audio, que es lo que hace la herramienta de silenciar vídeo. La de rotar vídeo puede activar una marca de rotación en lugar de girar los píxeles, aunque los reproductores que la ignoran muestran la orientación original. Cuando haya que cambiar píxeles, cámbialo todo en una sola pasada.

La pista de audio es la otra mitad

El audio es un flujo aparte, con su propio códec, frecuencia de muestreo y disposición de canales, y es un motivo habitual de que un archivo no se reproduzca. Un navegador que decodifica la imagen H.264 sin problemas puede no decodificar el sonido envolvente AC-3 o DTS, y dejar silencio o un fallo total en todo el archivo. Los rips de disco en MKV fallan así constantemente.

La frecuencia de muestreo es cada cuánto se midió la forma de onda: 44100 Hz viene del CD y 48000 Hz es el estándar de vídeo. AAC a 48000 Hz en estéreo es la opción segura para entregar, cerca de 128 kb/s para voz y 192 kb/s para música. El extractor de audio saca una pista como MP3, WAV, AAC u Opus.

Convertir vídeo en GIF

GIF es un formato de imagen fija de 1987 con la animación atornillada encima y sin compensación de movimiento real. Cada fotograma se comprime en gran medida por su cuenta, así que cinco segundos pueden llegar a varios megabytes donde el mismo clip como MP4 mudo son un par de cientos de kilobytes. Está limitado a 256 colores por fotograma, tiene un bit de transparencia y no tiene audio.

El límite de colores es donde se gana o se pierde la calidad. Una paleta fija genérica produce bandas en los degradados y obliga a un tramado agresivo, y ese ruido es casi aleatorio, así que comprime mal e infla el archivo. Construir una paleta a partir del propio clip y después mapear los fotogramas sobre ella da mejor imagen y a menudo un archivo más pequeño; el conversor de vídeo a GIF hace esa pasada. Mantén los GIF cortos y estrechos: dos o tres segundos, de 480 a 640 píxeles de ancho, de 10 a 15 fotogramas por segundo. Si el destino acepta vídeo, envía un MP4 silenciado.

Ajustes que funcionan para la web

  • H.264 en MP4 con audio AAC para todo lo que simplemente tenga que reproducirse.
  • CRF cerca de 23, bajando a 20 para grabaciones de pantalla con texto fino y subiendo a 26 para imágenes de fondo.
  • Redimensiona al ancho con el que se va a mostrar, antes de comprimir y no después.
  • Activa faststart, para que el índice quede al principio y la reproducción empiece antes de que termine la descarga.

Todo esto se ejecuta en el navegador, en tu propia máquina, así que no se sube nada y el límite es la memoria, no una cuota de servidor. Los búferes de decodificación de un archivo 4K largo pueden agotar una pestaña, así que recorta primero y redimensiona después.