¿Qué es la transcodificación?
La transcodificación convierte un archivo multimedia existente de un códec, formato, bitrate o resolución a otro. Es el paso que transforma una subida impredecible en contenido multimedia que se reproduce de forma confiable en los dispositivos, navegadores y condiciones de red que soporta tu producto.
Esta guía explica cuándo es necesaria la transcodificación, en qué se diferencia de operaciones relacionadas y cómo construir un flujo de transcodificación gestionado sin operar tu propia infraestructura de FFmpeg.

¿Qué es la transcodificación?
La transcodificación decodifica un flujo multimedia existente y lo vuelve a codificar con una configuración de salida diferente. La salida puede cambiar su contenedor, códec, resolución, bitrate, tasa de fotogramas, disposición de audio, o varias de estas propiedades a la vez.
El siguiente diagrama muestra la ruta habitual: la entrada comprimida se decodifica a una representación intermedia, como PCM para audio o YUV para video, y luego se codifica en el formato de destino. La transcodificación con pérdida repetida puede introducir pérdida por generación, así que conserva la fuente de mayor calidad y deriva de ella los formatos de entrega, en lugar de convertir repetidamente salidas anteriores.

¿Cuándo necesitas la transcodificación?
Las tareas de transcodificación habituales resuelven uno o más de estos problemas:
- Compatibilidad de reproducción: normalizar las subidas a códecs y contenedores compatibles con los navegadores, aplicaciones móviles, televisores o herramientas de edición a los que apuntas.
- Transmisión adaptativa: crear múltiples variantes para HLS o DASH para que un reproductor pueda cambiar la calidad conforme varía el ancho de banda.
- Reducción del tamaño de archivo: bajar la resolución o el bitrate, o migrar a un códec más eficiente, para reducir los costos de almacenamiento y entrega.
- Salida de producto consistente: normalizar la tasa de fotogramas, dimensiones, sonoridad, canales y metadatos, incluso cuando los usuarios suben archivos desde muchos dispositivos distintos.
- Creación de derivados: producir vistas previas, versiones móviles, salidas solo de audio o másteres de archivo a partir de una sola fuente.
Transcodificación vs. codificación vs. transmuxing
Estos términos describen operaciones relacionadas, pero diferentes:
| Operación | Qué cambia | ¿Decodifica y vuelve a codificar? | Ejemplo |
|---|---|---|---|
| Codificación | El contenido multimedia crudo o sin comprimir se convierte en contenido multimedia comprimido | Sí | Fotogramas de cámara a H.264 |
| Transcodificación | El contenido multimedia comprimido existente recibe una nueva configuración de entrega | Sí | HEVC 4K a H.264 1080p |
| Transmuxing | El contenedor cambia mientras los flujos codificados permanecen intactos | No | H.264 de MOV a MP4 |
El transmuxing es más rápido y evita la pérdida por generación, pero solo funciona cuando los flujos existentes ya son adecuados para el destino. Si el códec, la resolución, el bitrate u otra propiedad del flujo debe cambiar, necesitas transcodificación.
¿Cómo puedo transcodificar videos con Transloadit?
Puedes construir un pipeline de transcodificación propio con FFmpeg, pero los sistemas en producción también necesitan gestión de subidas, colas, reintentos, escalado, monitoreo, integración de almacenamiento y entrega. Transloadit ofrece todas estas partes como una sola API de procesamiento de archivos gestionada.
El Video Encode Robot aplica ajustes preestablecidos o parámetros personalizados de FFmpeg, mientras que el Video Adaptive Robot crea paquetes adaptativos HLS o MPEG-DASH. Los flujos de solo audio pueden usar el Audio Encode Robot.
¿Qué tal si vemos un ejemplo? El Template a continuación muestra cómo hacer que cualquier video subido sea compatible con navegadores, usando Uppy.
<!-- This pulls Uppy from our CDN -->
<!-- For smaller self-hosted bundles, install Uppy and plugins manually: -->
<!-- npm i --save @uppy/core @uppy/dashboard @uppy/remote-sources @uppy/transloadit ... -->
<link
href="https://releases.transloadit.com/uppy/v3.10.0/uppy.min.css"
rel="stylesheet"
/>
<button id="browse">Select Files</button>
<script type="module">
import {
Uppy,
Dashboard,
ImageEditor,
RemoteSources,
Transloadit,
} from 'https://releases.transloadit.com/uppy/v3.10.0/uppy.min.mjs'
const uppy = new Uppy()
.use(Transloadit, {
waitForEncoding: true,
alwaysRunAssembly: true,
assemblyOptions: {
params: {
// It's often better store encoding instructions in your account
// and use a `template_id` instead of adding these steps inline
steps: {
':original': {
robot: '/upload/handle',
},
browser720_webm_encoded: {
use: ':original',
robot: '/video/encode',
result: true,
ffmpeg_stack: 'v7',
height: 720,
preset: 'webm',
turbo: false,
width: 1280,
},
browser720_h264_encoded: {
use: ':original',
robot: '/video/encode',
result: true,
ffmpeg_stack: 'v7',
height: 720,
preset: 'ipad-high',
turbo: false,
width: 1280,
},
thumbed: {
use: 'browser720_h264_encoded',
robot: '/video/thumbs',
result: true,
count: 1,
ffmpeg_stack: 'v7',
format: 'jpg',
height: 720,
resize_strategy: 'fit',
width: 1280,
},
exported: {
use: ['browser720_webm_encoded', 'browser720_h264_encoded', 'thumbed', ':original'],
robot: '/s3/store',
credentials: 'demo_s3_credentials',
url_prefix: 'https://demos.transloadit.com/',
},
},
},
},
})
.use(Dashboard, { trigger: '#browse' })
.use(ImageEditor, { target: Dashboard })
.use(RemoteSources, {
companionUrl: 'https://api2.transloadit.com/companion',
})
.on('complete', ({ transloadit }) => {
// Due to `waitForEncoding:true` this is fired after encoding is done.
// Alternatively, set `waitForEncoding` to `false` and provide a `notify_url`
console.log(transloadit) // Array of Assembly Statuses
for (const assembly of transloadit) {
console.log(assembly.results) // Array of all encoding results
}
})
.on('error', (error) => {
console.error(error)
})
</script>
También puedes probar flujos relacionados sin escribir código de integración:
Construye tu primer flujo de transcodificación
Comienza con la demo de compatibilidad con navegadores anterior y luego modifica su ajuste preestablecido según la salida que necesite tu producto. Puedes ejecutar el Template resultante a través de la API, conectarlo a Uppy para subidas desde el navegador, o agregar un Robot de exportación para entregar los resultados directamente a tu proveedor de almacenamiento.
Si necesitas ayuda para elegir códecs, variantes o formatos de transmisión, habla con nuestro equipo.
