Audio-Synchronisation mit audio delay von Transloadit meistern

Der Parameter audio delay im Überblick
Eines der ungewöhnlicheren Werkzeuge, die der Robot
/video/merge bietet, ist sein Parameter
audio_delay, mit dem Sie Ihr Audio für eine festgelegte Anzahl von Sekunden
pausieren können. Auf den ersten Blick mag es wie ein sehr spezieller Anwendungsfall wirken, einem
Video eine Audioverzögerung hinzuzufügen. Eine schnelle Onlinesuche nach dem Begriff „audio delay“
liefert Ihnen seitenweise Informationen darüber, wie sich eine Audioverzögerung beheben lässt,
statt sie gezielt zu erzeugen. Nachdem ich jedoch eine Weile mit dem
Robot /video/merge
experimentiert hatte, fand ich schnell einen praktischen Einsatzzweck für den Parameter, den ich
heute mit Ihnen teilen möchte 😄
Video und Audio vorbereiten
Ähnlich wie in meinem letzten Beitrag über die neuen Wasserzeichen-Parameter verwende ich ein kostenloses Video von Pexels videos, um den Parameter kurz vorzuführen. Außerdem brauchen wir für den Anfang etwas Audio, deshalb verwende ich den kostenlosen Musiktitel „Hey Mercy“ von Pierce Murphy, der unter der CC-BY-4.0-Lizenz veröffentlicht wurde.

Alles synchronisieren
Mit dem Robot /video/merge können wir die genannten Video- und Audiodateien recht einfach zusammenführen. Hier ist ein Beispiel für eine Implementierung, die ich erstellt habe, um die auf meiner Dropbox gespeicherten Video- und Audiodateien abzurufen, sie zusammenzuführen und das fertige Video auf YouTube hochzuladen.
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)
Und hier sehen wir das Ergebnis:
Passt nicht so richtig zusammen, oder? Genau hier kann der Parameter
audio_delay glänzen. Fügen wir ihn dem
/video/merge-Teil der Implementierung hinzu, und zwar so:
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"
}
Wir können die Anzahl der Sekunden festlegen, um zu bestimmen, ab wann das Audio abgespielt werden soll. In unserem Ausgangsvideo setzt die Nadel offenbar bei etwa 2,5 Sekunden auf, lassen wir unser Audio also ab diesem Punkt spielen. Nachdem ich den Code erneut ausgeführt habe, bin ich gespannt auf das entstandene Video:
Und siehe da! Audio und Video sind dank des Parameters audio delay sauber
synchronisiert. Meiner Meinung nach ist das einer der ungewöhnlicheren Parameter, die unsere
Robots hier bei Transloadit bieten. Ich hoffe, dieser Beitrag
kann etwas Kreativität wecken oder zumindest allen helfen, die die sprichwörtliche Nadel im
Heuhaufen suchen: wie man eine Audioverzögerung in einem Video erzeugt – statt sie zu beheben!