Synchronisation audio : maîtriser le retard audio de Transloadit

Présentation du paramètre de retard audio
L’un des outils les plus originaux qu’offre le Robot
/video/merge est son paramètre audio_delay, qui vous permet de mettre
votre audio en pause pendant un nombre de secondes défini. Au premier abord, ajouter un retard audio
à une vidéo peut sembler un cas d’usage très particulier. Une recherche rapide en ligne sur le terme
« retard audio » vous renverra des pages d’informations expliquant comment corriger un retard
audio, plutôt que comment le créer volontairement. Cependant, après avoir expérimenté un moment avec
le Robot /video/merge, j’ai rapidement trouvé une
utilisation astucieuse de ce paramètre que je souhaite partager avec vous aujourd’hui 😄
Préparer la vidéo et l’audio
Dans la lignée de mon dernier article présentant les nouveaux paramètres de filigrane, je vais utiliser une vidéo gratuite issue des vidéos Pexels pour une rapide démonstration du paramètre. Nous aurons également besoin d’audio pour commencer ; j’utiliserai donc le morceau de musique gratuit « Hey Mercy » de Pierce Murphy, publié sous licence CC BY 4.0.

Synchroniser le tout
Avec le Robot /video/merge, nous pouvons fusionner assez facilement les fichiers vidéo et audio mentionnés plus haut. Voici un exemple d’implémentation que j’ai créé pour extraire les fichiers vidéo et audio stockés sur mon Dropbox, les fusionner, puis envoyer la vidéo finale sur YouTube.
const { Transloadit } = require('transloadit')
const transloadit = new Transloadit({
authKey: process.env.TRANSLOADIT_AUTH_KEY,
authSecret: process.env.TRANSLOADIT_SECRET_KEY,
})
const options = {
params: {
steps: {
dropbox_imported_video: {
robot: '/dropbox/import',
result: 'true',
credentials: 'my_videos',
path: `Videos/${process.argv[2]}`,
},
dropbox_imported_mp3: {
robot: '/dropbox/import',
result: 'true',
credentials: 'my_videos',
path: `Music/${process.argv[3]}`,
},
merged: {
use: {
steps: [
{
name: 'dropbox_imported_video',
as: 'video',
},
{
name: 'dropbox_imported_mp3',
as: 'audio',
},
],
},
robot: '/video/merge',
result: 'true',
audio_delay: 0,
ffmpeg_stack: 'v7',
preset: 'hls-1080p',
},
exported: {
use: ['merged'],
robot: '/youtube/store',
credentials: 'youtube_auth_xxxxxxxxxx',
title: process.argv[4],
description: 'Using the /video/merge Robot I can merge audio and video!',
keywords: 'music',
category: 'education',
visibility: 'unlisted',
},
},
},
}
transloadit.createAssembly(options)
.then((result) => console.log({ result }))
.catch(console.error)
Et voici le résultat :
Cela ne semble pas très bien coller, n’est-ce pas ? C’est là que le paramètre audio_delay entre en
scène. Ajoutons-le à la partie /video/merge de l’implémentation, comme ceci :
merged:{
use: {
steps: [
{
name: "dropbox_imported_video",
as: "video"
},
{
name: "dropbox_imported_mp3",
as: "audio"
}
]
},
robot: "/video/merge",
result: true,
audio_delay: 2.5,
ffmpeg_stack: "v7",
preset: "hls-1080p"
}
Nous pouvons indiquer un nombre de secondes pour définir le moment où l’audio doit commencer à jouer. Dans notre vidéo d’origine, l’aiguille semble se poser sur le disque vers 2,5 secondes ; faisons donc démarrer notre audio à partir de ce moment. Après avoir relancé le code, j’ai hâte de découvrir la vidéo obtenue :
Et voilà ! Notre audio et notre vidéo sont joliment synchronisés grâce au paramètre audio delay.
À mon avis, c’est l’un des paramètres les plus originaux proposés par nos
Robots ici chez Transloadit. J’espère que cet article saura
stimuler la créativité, ou du moins aider quiconque cherche cette fameuse aiguille dans une botte de
foin : comment créer — plutôt que corriger — un retard audio dans une vidéo !