¿Qué es la transcodificación?
La transcodificación decodifica y vuelve a codificar medios existentes para cambiar su códec, tasa de bits, resolución u otras propiedades del flujo. Es el paso que convierte una subida impredecible en medios que se reproducen de forma fiable en los dispositivos, navegadores y condiciones de red que admite tu producto.
Esta guía explica cuándo es necesaria la transcodificación, en qué se diferencia de otras operaciones relacionadas y cómo crear un flujo de trabajo de transcodificación gestionado sin tener que operar una infraestructura de FFmpeg por tu cuenta.

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

¿Cuándo necesitas transcodificar?
Las tareas habituales de transcodificación 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 de destino.
- Streaming adaptativo: crear varias variantes para HLS o DASH para que un reproductor pueda cambiar la calidad a medida que cambia el ancho de banda.
- Reducción del tamaño de los archivos: reducir la resolución o la tasa de bits, o pasar a un códec más eficiente, para reducir los costos de almacenamiento y entrega.
- Salida uniforme del producto: normalizar la frecuencia de fotogramas, las dimensiones, la sonoridad, los canales y los metadatos, incluso cuando los usuarios suben archivos desde muchos dispositivos diferentes.
- Creación de versiones derivadas: producir vistas previas, variantes para dispositivos móviles, salidas de solo audio o archivos maestros para conservación a partir de una fuente.
Transcodificación frente a codificación y transmuxing
Estos términos describen operaciones relacionadas, pero diferentes:
| Operación | Qué cambia | ¿Decodificación y recodificación? | Ejemplo |
|---|---|---|---|
| Codificación | Los medios sin procesar o sin comprimir se convierten en medios comprimidos | No; solo codificación inicial | Fotogramas de cámara a H.264 |
| Transcodificación | Los medios comprimidos existentes reciben una nueva configuración de entrega | Sí | HEVC 4K a H.264 1080p |
| Transmuxing | Cambia el contenedor 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 generacional, pero solo funciona cuando los flujos existentes ya son adecuados para el destino. Si el códec, la resolución, la tasa de bits u otra propiedad del flujo deben cambiar, necesitas transcodificar.
¿Cómo puedo transcodificar videos con Transloadit?
Puedes crear un pipeline interno de transcodificación con FFmpeg, pero los sistemas de producción también necesitan gestión de subidas, colas, reintentos, escalado, monitoreo, integración con el almacenamiento y entrega. Transloadit proporciona estos componentes como una única API gestionada de procesamiento de archivos.
El Video Encode Robot aplica ajustes preestablecidos o parámetros personalizados de FFmpeg, mientras que el Video Adaptive Robot crea paquetes adaptativos de HLS o MPEG-DASH. Los flujos de trabajo de solo audio pueden usar el Audio Encode Robot.
¿Qué tal si vemos un ejemplo? El siguiente Template muestra cómo codificar un video subido cuyo formato de origen es compatible, con el fin de reproducir el resultado en 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 de trabajo relacionados sin escribir código de integración:
Encoding de audio
Encoding FLAC de alta calidad
(English)Procesamiento de imágenes
Reduce hasta un 80 % el tamaño de los archivos de imagen sin perder calidad
(English)Encoding de video
Insertar un anuncio en un video en un momento específico
(English)Crea tu primer flujo de trabajo de transcodificación
Empieza con la demo compatible con navegadores de arriba y adapta su ajuste preestablecido a la salida que necesita tu producto. Puedes ejecutar el Template resultante mediante la API, conectarlo a Uppy para subir archivos desde el navegador o añadir 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 streaming, habla con nuestro equipo.
