Sincronizzare Audio E Video


Scritta da Aristerco di Arrea il 09-03-2004

Una soluzione al frequente problema di asincronia fra audio e video.


SINCRONIZZARE AUDIO E VIDEO MODIFICANDO LA DURATA DELL' AUDIO

La desincronizzazione fra audio e video in un filmato può essere di due tipi: una desincronizzazione "isometrica" quando il video e l'audio hanno la stessa identica durata ma sono fra loro "sfalzati" di un certo intervallo temporale e "non isometrica", quando cioè la traccia video e la traccia audio hanno durata diversa, pur appartenendo allo stesso film.

La prima situazione è senz'altro la più comune e può essere facilmente corretta con apposite funzioni di programmi di videoediting: in Virtualdub, ad esempio, ciccando su Audio -> Interleaving si accede ad una finestra che in basso fornisce l'opzione "delay audio track by" (cioè "ritarda la traccia audio di...")

user posted image

e permette di inserire un valore positivo o negativo di ritardo dell'audio in modo da resincronizzarlo con la traccia video.

Il secondo tipo di desincronizzazione può invece verificarsi sostanzialmente in due casi:

quando variamo il "Frame Rate" della traccia video

quando vogliamo incollare una traccia audio presa da un film con un certo "Frame Rate" in un altro film con la stessa traccia video ma con un "Frame Rate" diverso.


Vediamo il primo caso.

La domanda che viene spontanea è: perche mai dovremmo variare il "frame rate" di un film? La risposta ad esempio può essere questa: ci sono dei film codificati in NTSC con un frame rate di 23.975 fps. Guardando questi video su un lettore da PC non si riscontra nessun problema, ma quando si tenta di creare un (S)VCD o un DVD in standard PAL quasi sempre si ottiene un video a scatti (in genere un piccolo stop ogni 2-3 secondi). La causa risiede nel fatto che il frame rate standard del PAL è 25 fps. Quando un software di masterizzazione (a me è capitato ad esempio con Nerovision Express) effettua il rendering del video partendo da un framerate di 23.975 fps, siccome non può modificare la durata della traccia audio, è costretto ad inserire periodicamente un piccolo ritardo nella traccia video per non desincronizzare l'audio: ed ecco il fastidioso scattino del video.

Per evitare il video a scatti nel VCD o nel DVD PAL è necessario quindi variare il frame rate del video da 23.975 fps a 25 fps. Solo che, così facendo, il video risulta più veloce di prima, anche se di poco e quindi l'audio si desincronizza e stavolta la desincronizzazione è tanto più ampia quanto più si va avanti nel film: non basta quindi inserire un ritardo della traccia audio come nella desincronizzazione isometrica; stavolta bisogna variare la velocità di riproduzione della traccia audio e farla coincidere con la nuova velocità di riproduzione della traccia video. Vediamo come farlo con Virtualdub.

Apriamo Virtualdub e carichiamo il nostro DivX (ad esempio) con il frame rate a 23.975 fps. Clicchiamo su "Video" e poi su "Direct Stream Copy", di nuovo su "video" e poi su "Frame Rate": si aprirà una finestra "Video Frame Rate Control".

user posted image


In alto nel riquadro "Source rate adjustement", selezionare "Change to ... frame per second" e scrivere nella casella bianca: "25", poi ciccare su OK.


Ora bisogna ciccare su Audio e selezionare "Full processing mode", poi di nuovo Audio e selezionare Use advanced filtering, poi di nuovo Audio e cliccare su Filters... ; si apre una finestra "Audio Filters".


user posted image

Cliccando su "Add" compare una lista di filtri disponibili.

user posted image

Evidenziare "Input" e cliccare su Add, poi evidenziare "stretch" e cliccare su Add, poi evidenziare "Output" e cliccare su Add, poi cliccare su "Close".
A questo punto ci ritroviamo sulla finestra "Audio Filters" con le tre caselle scelte, collegate con 2 frecce.

user posted image

Facendo doppio click su "stretch" si apre una finestrella "Stretch ratio". Qui, nell'unico spazio disponibile bisogna inserire il valore del rapporto fra il vecchio "frame rate" ed il nuovo "frame rate" scelto. Nel nostro caso, il frame rate da cui partiamo è 23.975 fps e quello in cui vogliamo convertire il video è invece 25 fps; quindi:
23.975 / 25 = 0.959.
Inseriamo questo numero e clicchiamo su OK.

Adesso siamo pronti a salvare il nostro video col nuovo frame rate: solo un'ultima considerazione. Abbiamo settato il video a "direct stream copy" in modo che Virtualdub salvi la traccia video mantenendo le precedenti impostazioni di compressione e risparmiando quindi tutta la rielaborazione del video (e quindi alcune ore di attesa). Però, per poter aggiungere filtri all'audio, abbiamo settato l'audio a "full processing mode", il che significa che Virtualdub procederà a rielaborare la compressione dell'audio: di default, l'audio viene salvato senza compressione (veloce, ma occupa un po' di spazio): se vogliamo ricomprimere l'audio (magari in MP3), dobbiamo selezionare di nuovo "audio", poi "compression..." poi il tipo di compressione audio preferita e configurarla.

Ora l'ultimo passo: ciccare su "File", poi su "Save as AVI". Dare un nuovo nome al nostro video e poi OK.

Abbiamo finito: se volete controllare, chiudete il file su cui avete lavorato fin?ora, aprite il nuovo file appena salvato, ciccate su ?video? poi su ?Frame rate? e dovreste vedere che nella riga "Change so video and audio durations match", il valore in fps ? lo stesso di quello della riga "No change".

Se adesso provate a masterizzare questo video su (S)VCD o DVD PAL, il video dovrebbe essere perfettamente fluido.

E' ovvio che, poiche in questo modo la traccia audio viene accelerata (o rallentata) le voci e la musica subiscono variazioni di tonalità che possono essere accettabili solamente se la variazione non è eccessiva. In pratica è una procedura applicabile se vogliamo modificare il frame rate di un video al massimo di 1 o 2 fps.


Il secondo caso è leggermente più complesso in quanto la traccia audio proviene da un file diverso, di cui non conosco necessariamente il frame rate e che potrebbe essere stato tagliato in punti diversi dal mio file e quindi avere una durata complessiva diversa.

Supponiamo di avere un film NTCS con una ottima traccia video a 23.975 fps e l'audio in inglese, e lo stesso film PAL (25 fps) con un video non buono e l'audio in italiano. Se volessimo prendere la traccia audio in italiano e sostituirla alla traccia audio in inglese del primo film, dovremmo procedere così:

La prima cosa da fare è tagliare il film italiano della stessa identica lunghezza del film inglese (bisogna controllare quindi che inizino e finiscano allo stesso punto, tagliando eventualmente le parti eccedenti dell'uno o dell'altro).
Ora carichiamo in virtualdub il film italiano e salviamo il solo audio (File -> Save Wav...).
Con un qualunque editor Wav (basta anche Windows Media Player, caricando il file e selezionando File -> Proprietà) apriamo il file audio generato, annotiamo la durata in hh:mm:ss e richiudiamo l'editor o il windows media player.
Carichiamo in Virtualdub il film inglese e salviamo solo la traccia video selezionando Video -> Direct Stream Copy e poi Audio -> no audio... e poi File -> Save as AVI, diamo un nome e salviamo.
Adesso abbiamo la traccia video a 23.975 fps e la traccia audio in italiano: riuniamo le due, carichiamo in virtualdub la traccia video, poi selezioniamo Video -> Direct stream copy e poi Audio -> Wav audio e selezioniamo il file wav con l'audio in italiano. Salviamo il nuovo film completo ciccando su File -> Save as AVI e dandogli un nuovo nome.
Abbiamo quindi un nuovo file col video preso dal film in inglese e l'audio preso da quello italiano, ma desincronizzati: non resta che procedere alla risincronizzazione.
Apriamo il nuovo file con virtualdub. Clicchiamo su File -> File Information e leggiamo la durata in hh:mm:ss del video (seconda riga, a fianco al numero di frames).
Adesso convertiamo in secondi la durata sia del file audio (l'avevamo annotata prima ricordate?) che del file video (per quelli non forti in matematica, bisogna fare: 3600 x ore + 60 x minuti + secondi) ed ora dividiamo la durata in secondi del video per la durata in secondi dell'audio e segniamo il numero trovato (il rapporto fra la durata del video e quella dell'audio).
Ora, come già visto per il primo caso, bisogna aprire Audio e "Full processing mode", poi di nuovo Audio e selezionare "Use advanced filtering", poi di nuovo Audio e cliccare su "Filters..." ; si apre una finestra "Audio Filters". Cliccando su "Add" compare una lista di filtri disponibili. Evidenziare "Input" e cliccare su Add, poi evidenziare "stretch" e cliccare su Add, poi evidenziare "Output" e cliccare su Add, poi cliccare su "Close".
A questo punto ci ritroviamo sulla finestra "Audio Filters" con le tre caselle scelte, collegate con 2 frecce. Facendo doppio click su "stretch" si apre una finestrella "Stretch ratio". Qui, nell'unico spazio disponibile, bisogna inserire il valore del rapporto che abbiamo calcolato (e, spero, annotato) poco fa. Inseriamo questo numero e clicchiamo su OK.
Adesso siamo pronti a salvare il nostro video col nuovo frame rate: come già detto prima però, se volete ricomprimere l'audio dovete selezionare la compressione desiderata e configurarla. Ora l'ultimo passo: ciccare su "File", poi su "Save as AVI"; dare un nuovo nome al nostro video e poi OK.

Abbiamo finito: se volete controllare, chiudete il file su cui avete lavorato fin?ora, aprite il nuovo file appena salvato, ciccate su "Video" poi su "Frame rate" e dovreste vedere che nella riga "Change so video and audio durations match", il valore in fps è lo stesso di quello della riga "No change".
Pagina stampata da Divxmania.it
Vietata la copia e la distribuzione (anche parziale) senza la previa autorizzazione.