In questa fase verranno
manipolati i
file necessari al/i flusso/i audio del vostro videoclip. I dati audio
verranno espansi, analizzati (se necessario modificati) e ricompressi,
e alla fine saranno pronti per essere uniti al flusso video.
Che cosa manipoliamo
adesso?
Cominciamo dall'audio, e per semplici motivi. Innanzitutto è
probabilmente la fase più noiosa (per qualcuno
potrà
addirittura essere terrorizzante, a causa della riga di comando!),
dunque meglio sbrigarla subito. In secondo luogo, al momento di
comprimere il
video avremo la necessità di conoscere esattamente quanto
spazio
occupa il flusso audio complessivo (con questa espressione indico
tutto
l'audio, a prescindere dal
numero di tracce diverse).
Va bene. Partiamo?
Non ancora. Adesso presentiamo qualche piccolo accorgimento che
tornerà utile in futuro. Se osserviamo il nome che il ripper
ha dato ai vari file AC3, possiamo notare che alla fine indica "Delay"
(ritardo) e un valore che può essere positivo o negativo (in
genere uguale per tutti i file): questo numero indica uno sfasamento
(in millisecondi) dell'audio rispetto al video e conviene annotarlo
perché, quando aggiungeremo l'audio al videoclip, il suo
esatto
inserimento ci assicurerà il perfetto sincronismo fra
immagini e
sonoro.
Se è stato rippato l'intero film probabilmente
varrà 0
(zero), perché i flussi audio e video cominciano insieme,
mentre
se avete rippato solo qualche capitolo non lo sarà (credo
che
sia proprio a causa della divisione dei flussi in capitoli) ma in ogni
caso è sempre meglio annotarlo.
Se volete utilizzare
solo l'audio AC3
così com'è potete anche passare all'
elaborazione video.
Suggerimento:
create un nuovo file di testo e rinominatelo. Il nuovo nome
sarà
"Delay" e il valore del ritardo (potete omettere il segno + se
è positivo); non modificatelo, avete finito! Otterrete
così un doppio vantaggio: in fase di creazione non aprirete
una
nuova applicazione per modificare il testo (risparmio di tempo) e in
fase di lettura basterà dare un'occhiata al contenuto della
cartella per reperire l'informazione che vi serve (doppio risparmio di
tempo). Vi pare poco?
|
Veniamo al secondo accorgimento. Qualcuno si starà chiedendo:
"Ma se il nome del file AC3 contiene già l'informazione sul
ritardo, perché devo annotarla da un'altra parte?". E' una
giusta osservazione, non serve replicare le informazioni, e la risposta
è che stiamo per distruggerne la prima copia. Proprio
così: il nome del file AC3 è lunghissimo ed antipatico da
digitare alla riga di comando, dove stiamo per apprestarci, dunque lo
cambieremo. E, visto che contiene anche l'informazione sulla lingua
contenuta nella traccia, sintetizzeremo il nome con solo tre lettere
che la indicano: sarà dunque "eng.ac3" per la lingua
inglese,
"ita.ac3" per l'italiano, "esp.ac3" per lo spagnolo e così
via.
Qual è il primo passo?
Come prima cosa decomprimiamo i file AC3. Aprite una shell DOS e
spostatevi nella cartella in cui sono stati copiati tutti i file (se
non sapete come, scopritelo qui);
lanciate il
comando:
a52dec -o wav ita.ac3 >ita.wav
oppure
a52dec -o wavdolby ita.ac3 >ita.wav
In tal modo il file ita.ac3 (italiano compresso, da 2 a 6 canali,
risoluzione 16 bit, campionamento a 48 KHz) verrà convertito
nel nuovo file ita.wav (italiano non compresso, 2 canali, risoluzione 16
bit, campionamento a 48 KHz),
un formato molto più manipolabile. Notate che il decoder (a52dec con patch
che trovate su
questo sito) mostra molte informazioni sullo stream audio,
compreso il bitrate: segnatelo, potrebbe servirvi al momento della compressione
video.
I due comandi utilizzano due diversi driver di output, per mostrare due
diversi risultati: sia wav
sia wavdolby
riducono l'audio
a due canali ma usano, come sorgente, un diverso sottoinsieme dei
canali originali. L'effetto è che mentre il primo genera
uno stereo reale ma "piatto", il secondo offre un sonoro più
ricco detto "spazializzato", particolarmente evidente
nelle scene con molti effetti. In genere la scelta dell'uno o
dell'altro dipende dal video clip, per cui provateli entrambi e
scegliete quello che rende meglio nel caso particolare.
Usiamo lo stesso comando per convertire tutti gli altri file AC3; se,
ad esempio, avessimo rippato anche le tracce inglese e spagnolo,
digiteremmo:
a52dec -o [wav/wavdolby] eng.ac3 >eng.wav
a52dec -o [wav/wavdolby] esp.ac3 >esp.wav
Col semplice script elabora.bat
avremmo risparmiato un po' di tempo davanti al monitor (sì,
l'operazione può essere lenta ma non richiede interazione),
ottenendo gli stessi risultati:
@Echo off
a52dec -o [wav/wavdolby] ita.ac3 >ita.wav
a52dec -o [wav/wavdolby] eng.ac3 >eng.wav
a52dec -o [wav/wavdolby] esp.ac3 >esp.wav
Fatto! I file in questo popolare formato possono essere manipolati da
tutti i software in circolazione, così siamo pronti alla
mossa
successiva.
Dunque usiamo l'audio
stereofonico:
due canali sono sempre la scelta giusta?
La verità è che nessuno ci obbliga, ovviamente.
Se
decidiamo di non usare l'audio multicanale, lo stereo va
generalmente bene per ogni tipo di video clip, ma è
possibile
risparmiare ancora un po' di kilobit sul sonoro. L'audio monofonico,
infatti, ha il vantaggio di richiedere bitrate più
"economici" e non è sempre una scelta da scartare: non ne
verrebbero sacrificate colonne sonore di vecchi film (monofoniche per
nascita), né di nuovi, quando basati su dialoghi. Vediamo
allora
come convertire in mono i nostri file audio con l'uso del tool SoX:
sox -V -c 2 input_due_canali.wav -c 1 output_un_canale.wav avg 0.5,0.5
La sintassi di SoX prevede la presenza di due file, uno di ingresso e
uno d'uscita (con rispettive opzioni), e l'effetto da applicare con
relativi
parametri. Qui indichiamo con
-c 2 che il
file di input ha
due canali, con -c 1
che quello
d'uscita ne avrà solo uno e che l'effetto
avg (average, media aritmetica) da applicare va usato con
parametri 0.5
(fattore peso del canale sinistro) e 0.5
(fattore peso del canale destro); notate che si usa il punto per
indicare le cifre decimali e la virgola per separare i pesi (ma non
aggiungete spazi tra di essi!).
L'opzione generale -V
(maiuscola),
indicata per prima, richiede al programma di essere più
prolisso, mostrando in dettaglio l'avanzamento della procedura.
Adesso vanno analizzati?
Sì. L'audio dei DVD è normalmente basso, e per
poterlo
poi ascoltare dalle casse del PC bisognerebbe alzare il volume al
massimo! Invece noi aumenteremo il livello dell'audio prima di
inserirlo nel videoclip, semplicemente utilizzando SoX. Digitiamo:
sox -V ita.wav -e stat -v
In questo caso particolare utilizziamo, al posto del file d'uscita,
l'opzione -e
(empty, vuoto),
un accorgimento che ci permette di risparmiare tempo e un bel po' di
spazio su disco perché SoX non utilizzerà un
secondo file, accelerando le operazioni.
Ma torniamo al livello del volume: l'effetto stat
con opzione -v
indica di calcolare la massima
amplificazione che possiamo applicare senza distorcere il suono, e di
restituirci questo valore. Potremmo riscrivere, utilizzando la stessa
sintassi, il comando che ci serve per analizzare gli altri file ma, ora
più che mai, ci viene in aiuto la flessibilità
dei file
batch: una nuova stesura di elabora.bat
potrebbe somigliare alla seguente:
@Echo off
rem *** Decompressione e riduzione a 2 canali con il driver preferito
***
a52dec -o [wav/wavdolby] ita.ac3 >ita.wav
a52dec -o [wav/wavdolby] eng.ac3 >eng.wav
a52dec -o [wav/wavdolby] esp.ac3 >esp.wav
rem *** Le prossime tre righe convertono l'audio in mono, qualora
servisse ***
sox -c 2 ita.wav -c 1 ita1.wav avg 0.5,0.5
sox -c 2 eng.wav -c 1 eng1.wav avg 0.5,0.5
sox -c 2 esp.wav -c 1 esp1.wav avg 0.5,0.5
rem *** Sostituite il nome di file corretto all'occorrenza ***
sox ita-definitivo.wav -e stat -v
sox eng-definitivo.wav -e stat -v
sox esp-definitivo.wav -e stat -v
Questo script fa da sè tutto ciò che abbiamo
spiegato fin
qui, e non ha bisogno di input aggiuntivi.
Potete lanciare lo script e minimizzare la shell per fare
qualcos'altro, ma abbiate cura
di non chiudere la finestra appena SoX avrà finito,
perché dovrete prendere nota dei risultati che vi
restituirà.
Ora i file sono pronti?
No di certo, li abbiamo solo analizzati; adesso procediamo
all'amplificazione.
Attenzione:
l'aver calcolato il giusto valore dell'amplificazione per ogni
traccia ci potrebbe suggerire di applicarli
rispettivamente tutti, anche se diversi (e generalmente lo sono).
Un'altra scuola di pensiero prevede l'applicazione dello stesso valore
per tutte le tracce, ossia il minore restituito da SoX. Se con la prima
scelta si ottiene un volume ottimale per ogni traccia, lo switch ad un
canale audio diverso potrebbe costringerci ad alzare o abbassare il
volume
(ricordiamo che nel DVD originale erano memorizzati a volumi diversi).
D'altro canto la seconda strada dà un livello accettabile
per tutte.
A voi la scelta.
|
Per applicare l'amplificazione al livello
livello
digitiamo:
sox -v livello
ita.wav ita2.wav
(Si, la v
è minuscola
e fa un'altra cosa!)
e similmente per tutte le tracce audio. Anche adesso potremmo
risparmiare tempo e lanciare un solo comando, creando e lanciando lo
script volume.bat:
@Echo off
sox -v livello1
ita.wav ita2.wav
sox -v livello2
eng.wav eng2.wav
sox -v livello3
esp.wav esp2.wav
Con
quale
tool comprimo le tracce audio?
Per ciò che riguarda la compressione bisogna porre attezione
alla scelta perché essa influenza il risultato finale del
backup.
Poiché con VirtualDubMod potete creare file .Avi e
.Ogm, ecco cosa potete mettere dentro ciascuno di essi:
File OGg Media (.Ogm)
|
File Audio-Video Interleave (.Avi)
|
Video Mpeg4
|
Video Mpeg4
|
Audio Vorbis (è a bitrate variabile)
Audio Mpeg e/o Ac3 a bitrate fisso
Audio Mpeg a bitrate variabile |
Audio Mpeg e/o Ac3 a bitrate fisso |
Informazioni sui capitoli |
Nessuna informazione sui capitoli |
Per comprimere l'audio nel formato Vorbis useremo il tool
oggenc
fornito insieme agli altri
vorbis-tools, mentre per comprimere l'audio nel formato Mpeg
(scegliendo il livello III dello standard Audio Mpeg 1, meglio
conosciuto
come mp3, che fornisce il miglior audio di questo tipo)
useremo il tool lame
(se non
sapete scegliere tra loro o non avete idea di quali vantaggi
offra l'uno rispetto all'altro cliccate
qui).
Qual è il
comando per
comprimere in formato Vorbis?
Digitiamo:
oggenc -q num
ita2.wav
Il programma comprimerà il file ita2.wav nel file ita2.ogg,
al
livello di qualità desiderato
num;
questo valore varia da -1 a 10 (potete immettere numeri con un massimo
di due cifre decimali ma usate la virgola per indicarle, non il punto)
e indica la qualità del file prodotto
secondo una logica crescente (più alto è il
valore,
più elevata la qualità). Il bitrate medio che
potete aspettarvi si ottiene da questa tabella:
q:qualità, b:bitrate
(in kbps)
q da -1,00 a 0
|
q da 0 a 4,00
|
q da 4,00 a 8,00
|
q da 8,00 a 9,00
|
q da 9,00 a 10,00
|
b=19*q+64
|
b=16*q+64
|
b=32*q
|
b=64*(q-4)
|
b=180*q-1300
|
Badate, come già detto si tratta di un bitrate orientativo (il
formato Vorbis è a bitrate variabile) e il valore medio
effettivo potrete saperlo alla fine dell'encoding di oggenc, nel
resoconto della compressione, alla
voce Average bitrate (a
proposito, prima di andare avanti appuntate questo valore: anche questo
vi servirà al momento di comprimere il video). Se
avete sempre compresso in Mp3, e dunque concepite la qualità
a partire dal bitrate, probabilmente vorrete sapere quale
qualità
richiedere per ottenere più o meno un dato bitrate; ecco la
tabella delle conversioni:
q:qualità, b:bitrate
(in kbps)
b da 45 a 64
|
b da 64 a 128
|
b da 128 a 256
|
b da 256 a 320
|
b da 320 a 500
|
q=(b-64)/19
|
q=(b-64)/16 |
q=b/32 |
q=b/64+4
|
q=b/180+65/9
|
I valori mostrati nelle tabelle si riferiscono all'encoding di tracce
stereofoniche, nel caso di codifiche mono
le cose cambiano leggermente (non riporto più quelle formule
astruse: chi di voi utilizzerà mai la qualità
2,73?...):
q:qualità, b:bitrate
(in kbps)
q=-1
|
q=0
|
q=1
|
q=2
|
q=3
|
q=4
|
q=5
|
q=6
|
q=7
|
q=8
|
q=9
|
q=10
|
b=32
|
b=48 |
b=60 |
b=70 |
b=80 |
b=86 |
b=96
|
b=110 |
b=120 |
b=140 |
b=160 |
b=240
|
Questo proliferare di formule e numeri potrebbe confondere molti, ma
l'approccio basato sulla qualità offre, sul rovescio della
medaglia, una sorprendente semplicità che
risulterà
senz'altro gradita. Che il vostro audio sia stereofonico o monofonico,
la qualità 3 vanta una resa sonora ottima e, se cercate di
fare
economia, non abbiate timore di scendere fino alla qualità 1
(pensateci bene però, prima di scendere ancora e, in ogni
caso,
ascoltate attentamente il risultato): l'efficienza della compressione
Vorbis vi sorprenderà!
Anche il comando che abbiamo appena visto potrebbe essere usato in uno
script per facilitare l'operazione. Come esempio, potremmo creare e
lanciare comprimi-ogg.bat:
@Echo off
oggenc -q num
ita2.wav
oggenc -q num
eng2.wav
oggenc -q num
esp2.wav
Ed ecco tutte e tre le tracce audio,
pronte per essere inserite nel videoclip!
Qual è il
comando per
comprimere in mp3?
Digitiamo:
lame -q 0 -b bitrate
--nssafejoint ita2.wav ita2.mp3
L'encoder lame comprimerà il file ita2.wav nel nuovo file
ita2.mp3 con un bitrate fisso pari al valore di bitrate;
l'opzione -q accetta
valori da 0 a 9 ed indica la qualità degli algoritmi MPEG
utilizzati secondo una logica decrescente (minore è il valore,
maggiore la qualità, ma anche la complessità e la lentezza);
il team di
sviluppo suggerisce come ottimali
valori dall'1 al 3, che offrono una buona qualità senza
allungare eccessivamente i tempi di encoding, ma chi scrive è
dell'idea che, se proprio bisogna rinunciare all'originale, tanto vale non
scendere a compromessi sulla qualità della compressione.
L'opzione --nssafejoint
impone a lame di usare una modalità di encoding joint stereo
più evoluta rispetto allo standard.
E il bitrate? Tenete presente che l'audio di un film è
più semplice di una canzone (il parlato, la colonna
sonora e gli effetti non sono mai insieme e raramente di elevata
intensità) e non riuscirete mai a cogliere i "tagli" della
compressione mp3 anche abbassando fortemente il bitrate: vanno dunque
benissimo valori da 64 a 112 kbps, 128 kbps o superiori sono, il più
delle volte, uno spreco di cui non apprezzerete la differenza.
Per comprimere tutte le tracce insieme basta creare e lanciare
comprimi-mp3.bat:
@Echo off
lame -q 0 -b bitrate
--nssafejoint ita2.wav ita2.mp3
lame -q 0 -b bitrate
--nssafejoint eng2.wav eng2.mp3
lame -q 0 -b bitrate
--nssafejoint esp2.wav esp2.mp3
Ed ecco pronte anche le tracce audio mpeg!
L'audio è
compresso con bitrate costante. Perché non usare
la modalità VBR per ottenere una compressione più
efficiente?
Ecco, lo sapevo, io non volevo parlarne e invece... uffa! Bene, vi
dirò quello che so:
è vero, l'encoding audio con bitrate variabile è
effettivamente più adatto (e le
prestazioni del formato Vorbis sono lì a dimostrarlo)
perché dà delle belle soddisfazioni
riuscire a comprimere musica mantenendo un file finale di dimensioni
contenute.
Ma è altrettanto vero che il formato Avi NON SUPPORTA
l'audio a bitrate variabile (avete visto la tabella qualche riga fa?).
Su Internet gira molto materiale video in questo
formato con audio VBR (ottenuto probabilmente col vecchio software
NanDub, una delle prime versioni "arricchite" di VirtualDub) ma si
tratta di una forzatura del formato e non è per nulla garantito
che funzioni sempre.
Quello che so è che se volete un videoclip che funzioni (davvero)
e che sfrutti l'efficienza dell'audio a bitrate variabile, fareste bene
a prendere in considerazione il formato Ogg/Ogm (che è nato
apposta!) e diffondere il verbo
dell'open-source ;-).
Per un approfondimento potete consultare l'help di VirtualDubMod, nel
quale gli autori affrontano in maniera esauriente l'argomento:
la discussione (nata su irc, in inglese) scende nei dettagli
implementativi e mostra perché sarebbe meglio evitare questa tecnica
e, dunque, perché gli sviluppatori hanno scelto di non supportare
l'audio mpeg VBR in contenitori AVI.
Però quante
complicazioni per aumentare il
volume delle tracce audio! Possibile che non esista un metodo
più semplice,
un trucchetto,
per ottenere lo stesso
risultato?
In realtà sì, e si chiama ReplayGain
(traducibile,
più o meno, con amplificazione
in riproduzione).
Sia lame sia oggenc, durante la fase di encoding, analizzano tutto il
file audio calcolando, tra l'altro, un fattore di scala (il ReplayGain,
appunto) che indica il volume del
brano rispetto ad un volume di riferimento; alla fine, aggiungono
questa informazione (insieme a molte
altre) nell'intestazione del file all'interno di un
tag
(etichetta di presentazione).
Lo scopo è intuibile:
indicare, al software che effettuerà la riproduzione,
l'amplificazione da applicare per ottenere il massimo volume senza aver
preventivamente modificato il brano originale: abbiamo appena visto che
è un'operazione lunga. Il player, da parte sua, durante
la riproduzione modificherà al volo i dati audio, subito
dopo la
decompressione, utilizzando proprio questo valore: un meccanismo molto
semplice.
Purtroppo la realtà è diversa ed è che
non esiste la certezza
che il
decoder utilizzi il valore di ReplayGain, o perché nascosto
nella moltitudine di opzioni da specificare su una riga di comando o
tra decine di finestre di dialogo (spesso disabilitato per default), o
perché deliberatamente trascurato dai programmatori del
player;
per non parlare degli encoder che non lo calcolano o, quando lo fanno,
sbagliano. Per la vostra tranquillità lame ed oggenc lo
calcolano (correttamente) per default, ma la realtà
è che
non sapete se
e
come
verrà usato il valore
di ReplayGain.
Ma allora noi non lo
usiamo mai?
Ma certo: lo abbiamo fatto (senza saperlo, è vero) per ogni
file
che è stato compresso! Dato, però, che avevamo
modificato
con SoX tutte le tracce, amplificandole, il ReplayGain calcolato
avrà per tutte un valore che, anche quando fosse utilizzato
correttamente, provocherebbe un aumento del volume pressoché
impercettibile. Nel caso peggiore, se proprio il decoder non volesse
saperne, ci andrà ancora bene, anzi meglio: infatti, non
solo il
sonoro del nostro videoclip sarà comunque ad un livello
ottimale, ma il player non modificherà i dati audio durante
la
riproduzione, riducendo il carico computazionale.
Speed-up:
per chi volesse utilizzare il formato mp3 per l'audio del proprio video
clip, ecco un'opzione di lame che dovrebbe far risparmiare del tempo
durante l'encoding: --noreplaygain (devo proprio spiegare a cosa serve?)
|
Torna al ripping.
Torna
su. Vai all'elaborazione
video.