Domine a sincronia de áudio com o atraso de áudio da Transloadit

Conheça o parâmetro de atraso de áudio
Uma das ferramentas mais singulares disponíveis no Robot
/video/merge é o parâmetro audio_delay, que permite pausar o áudio por uma
quantidade definida de segundos. À primeira vista, adicionar um atraso de áudio a um vídeo pode
parecer um caso de uso muito específico. Uma busca rápida na internet pelo termo “atraso de áudio”
traz páginas e páginas de informações sobre como corrigir o atraso de áudio, em vez de criá-lo
intencionalmente. No entanto, depois de brincar um pouco com o Robot
/video/merge, logo encontrei um uso bacana para o parâmetro que quero compartilhar com
você hoje 😄
Preparando o vídeo e o áudio
Assim como no meu último post, que apresentou os novos parâmetros de marca-d’água, vou usar um vídeo gratuito da biblioteca de vídeos do Pexels para fazer uma rápida demonstração do parâmetro. Além disso, vamos precisar de um áudio para começar, então vou usar a faixa musical gratuita “Hey Mercy”, de Pierce Murphy, lançada sob a licença CC BY 4.0.

Sincronizando tudo
Com o Robot /video/merge, podemos juntar os arquivos de vídeo e áudio mencionados com bastante facilidade. Veja um exemplo de implementação que criei para extrair os arquivos de vídeo e áudio armazenados no meu Dropbox, juntá-los e fazer o upload do vídeo final para o 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)
E aqui está o resultado:
Não parece encaixar muito bem, não é? É aqui que o parâmetro audio_delay tem a chance de
brilhar. Vamos adicioná-lo à parte /video/merge da
implementação, assim:
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"
}
Podemos definir o número de segundos para indicar quando queremos que o áudio comece a tocar. No vídeo original, parece que a agulha toca o disco por volta de 2,5 segundos, então vamos fazer o áudio tocar a partir desse ponto. Depois de executar o código novamente, mal posso esperar para ver o vídeo resultante:
E pronto! Nosso áudio e vídeo estão bem sincronizados graças ao parâmetro audio delay.
Na minha opinião, este é um dos parâmetros mais singulares disponíveis para os nossos
Robots aqui na Transloadit. Espero que este post desperte um pouco de
criatividade ou, pelo menos, ajude quem procura aquela proverbial agulha no palheiro: como criar —
e não corrigir — um atraso de áudio em um vídeo!