Qu’est-ce que le transcodage ?
Le transcodage décode et réencode des médias existants pour modifier leur codec, leur débit, leur résolution ou d’autres propriétés de leurs flux. C’est l’étape qui transforme un fichier téléversé imprévisible en un média dont la lecture est fiable sur les appareils, dans les navigateurs et dans les conditions réseau que votre produit prend en charge.
Ce guide explique quand le transcodage est nécessaire, en quoi il diffère des opérations connexes et comment créer un processus de transcodage géré sans exploiter vous-même une infrastructure FFmpeg.

Qu’est-ce que le transcodage ?
Le transcodage décode un flux multimédia existant et l’encode à nouveau avec une configuration de sortie différente. La sortie peut changer de conteneur, de codec, de résolution, de débit, de fréquence d’images, de configuration des canaux audio ou de plusieurs de ces propriétés à la fois.
Le schéma ci-dessous montre le parcours habituel : l’entrée compressée est décodée en une représentation intermédiaire, comme PCM pour l’audio ou YUV pour la vidéo, puis encodée dans le format cible. Des transcodages avec perte répétés peuvent introduire une perte de génération : conservez donc la source de la meilleure qualité possible et utilisez-la pour produire les formats de diffusion plutôt que de convertir à plusieurs reprises les sorties précédentes.

Quand avez-vous besoin du transcodage ?
Les tâches de transcodage courantes résolvent un ou plusieurs de ces problèmes :
- Compatibilité de lecture : normaliser les fichiers téléversés vers des codecs et des conteneurs pris en charge par les navigateurs, applications mobiles, téléviseurs ou outils de montage ciblés.
- Streaming adaptatif : créer plusieurs rendus pour HLS ou DASH afin qu’un lecteur puisse changer de qualité lorsque la bande passante varie.
- Réduction de la taille des fichiers : réduire la résolution ou le débit, ou adopter un codec plus efficace, pour diminuer les coûts de stockage et de diffusion.
- Résultats homogènes pour votre produit : normaliser la fréquence d’images, les dimensions, le niveau sonore, les canaux et les métadonnées, même lorsque les utilisateurs téléversent des fichiers provenant de nombreux appareils différents.
- Création de fichiers dérivés : produire des aperçus, des rendus pour mobiles, des sorties uniquement audio ou des masters d’archivage à partir d’une seule source.
Transcodage, encodage et transmuxage
Ces termes décrivent des opérations liées, mais différentes :
| Opération | Ce qui change | Décodage et réencodage ? | Exemple |
|---|---|---|---|
| Encodage | Un média brut ou non compressé devient un média compressé | Non ; encodage initial uniquement | Images d’une caméra vers H.264 |
| Transcodage | Un média compressé existant reçoit une nouvelle configuration de diffusion | Oui | HEVC 4K vers H.264 1080p |
| Transmuxage | Le conteneur change tandis que les flux encodés restent intacts | Non | H.264 de MOV vers MP4 |
Le transmuxage est plus rapide et évite la perte de génération, mais il ne fonctionne que si les flux existants conviennent déjà à la destination. Si le codec, la résolution, le débit ou une autre propriété du flux doit changer, vous avez besoin du transcodage.
Comment puis-je transcoder des vidéos avec Transloadit ?
Vous pouvez créer une chaîne de transcodage interne avec FFmpeg, mais les systèmes en production ont aussi besoin de gérer les téléversements, les files d’attente, les nouvelles tentatives, la mise à l’échelle, la supervision, l’intégration du stockage et la diffusion. Transloadit fournit ces éléments au sein d’une seule API de traitement de fichiers gérée.
Le Video Encode Robot applique des préréglages ou des paramètres FFmpeg personnalisés, tandis que le Video Adaptive Robot crée des ensembles adaptatifs HLS ou MPEG-DASH. Les processus uniquement audio peuvent utiliser l’Audio Encode Robot.
Et si nous examinions un exemple ? Le Template ci-dessous montre comment encoder une vidéo téléversée dont le format est pris en charge en entrée pour la lire dans un navigateur, avec 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>
Vous pouvez aussi essayer des processus connexes sans écrire de code d’intégration :
Encodage audio
Encodage FLAC de haute qualité
(English)Créer votre premier processus de transcodage
Commencez par la démonstration compatible avec les navigateurs ci-dessus, puis ajustez son préréglage pour obtenir la sortie dont votre produit a besoin. Vous pouvez exécuter le Template obtenu via l’API, le connecter à Uppy pour les téléversements depuis un navigateur ou ajouter un Robot d’export pour envoyer les résultats directement à votre fournisseur de stockage.
Si vous avez besoin d’aide pour choisir des codecs, des rendus ou des formats de streaming, échangez avec notre équipe.
