Ciao a tutti, dal momento che mi capita spesso di trovare film HD in lingua straniera e versioni SD dello stesso titolo in lingua italiana, mi sono più volte posto la domanda di quale fosse il metodo migliore (nel senso di preservazione della qualità audio/video, oltre che più semplice e veloce) per sincronizzare l'audio italiano con la traccia video HD appartenente al film in lingua straniera.
I software che utilizzo si riducono a MediaInfo, MKVToolNix e al lettore multimediale MPC-HC (Media Player Classic Home Cinema); per quanto riguarda invece la procedura (abbastanza semplice e che risulta efficace nella maggior parte dei casi con risultati più che soddisfacenti), i passaggi sono i seguenti:
- tramite MediaInfo risalgo al frame rate dei due video;
- riproducendo i due file video controllo se le scene che precedono l'inizio del film sono le stesse e in caso contrario mi calcolo approssimativamente il ritardo r0 in secondi tra l'inizio del film HD e l'inizio del film SD;
- apro i due file con MKVToolNix, deseleziono le tracce superflue, imposto per la traccia video HD un frame rate pari a quello del film SD, aggiungo alla traccia audio (e ad eventuali sottotitoli) ITA un ritardo pari a r0 e avvio il multiplexing;
- se r0=0, il file video generato sarà quasi sicuramente già sincronizzato, nel caso invece in cui ciò non sia verificato o se r0 è diverso da zero, apro l'mkv appena creato con MPC-HC e tramite l'opzione "spostamento audio(ms)", andando ad'occhio ed orecchio, trovo il giusto ritardo r1 che garantisca una perfetta sincronizzazione audio e video. A questo punto basterà modificare l'mkv precedentemente creato aggiungendo alla traccia audio ITA un ritardo pari a r1 e il gioco è fatto.
I pregi della suddetta procedura sono che è abbastanza semplice e veloce, e che, non richiedendo alcuna ricodifica (non sono un esperto, ma mi sembra di capire che il cambio di frame rate video ad opera di MKVToolNix avvenga senza ricodifica), consente di preservare la qualità delle tracce audio e video originali.
Un difetto potrebbe essere una sincronizzazione non rigorosa dovuta alle modalità "artigianali" per il calcolo di r1, ma sinceramente con l'esperienza acquisita nel tempo, anche nello scegliere le scene sui cui soffermarmi, ad occhio la sincronizzazione sembra perfetta.
Ovviamente questo metodo non funziona nel caso in cui le due versioni ITA e straniera del film sono caratterizzate da un montaggio diverso, per esempio un theatrical cut da una parte e un director's cut dall'altra; in questi casi ipotizzo che la cosa migliore sia utilizzare un software che consenta di comparare le due tracce audio per poi, tramite un'operazione di taglia e cuci, crearne una terza.
Il problema però è che a volte, nonostante le due versioni presentino lo stesso montaggio, il metodo sopra descritto non funziona, e audio e video risultano sempre sfasati tranne che in singoli punti. Per esempio sono adesso alle prese con un film che mi sta dando questo tipo di problema; di seguito riporto, se può essere utile, le informazioni sui due file generati con MediaInfo:
Utilizzando un frame rate di 50FPS ne risulta un video accelerato alla Benny Hill 😅, ho provato quindi a calcolarmi il giusto frame rate con la seguente formula da me ricavata:
FR=FR0*{1+(r2-r1)/[1000*(t2-t1)]}
dove:
- FR è il frame rate ricercato;
- FR0 è il frame rate della traccia video inglese;
- t1 e t2 è il tempo in secondi di due istanti del film;
- r1 e r2 sono i ritardi in ms per ottenere una sincronizzazione audio ITA e video ENG rispettivamente agli istanti t1 e t2.
Con il frame rate così ottenuto, c'è sincronizzazione sia al tempo t1 che al tempo t2, ma più ci si allontana da quegli istanti e più audio e video risultano fuori sincrono! 🤨
Come mai a volte capita che nonostante il film ITA e quello straniero abbiano (o almeno sembrino avere) lo stesso montaggio, il procedimento descritto all'inizio di questo post non funziona? E' possibile risolvere lavorando sulle tracce audio? Se sì, in che modo? E con quali software?
I software che utilizzo si riducono a MediaInfo, MKVToolNix e al lettore multimediale MPC-HC (Media Player Classic Home Cinema); per quanto riguarda invece la procedura (abbastanza semplice e che risulta efficace nella maggior parte dei casi con risultati più che soddisfacenti), i passaggi sono i seguenti:
- tramite MediaInfo risalgo al frame rate dei due video;
- riproducendo i due file video controllo se le scene che precedono l'inizio del film sono le stesse e in caso contrario mi calcolo approssimativamente il ritardo r0 in secondi tra l'inizio del film HD e l'inizio del film SD;
- apro i due file con MKVToolNix, deseleziono le tracce superflue, imposto per la traccia video HD un frame rate pari a quello del film SD, aggiungo alla traccia audio (e ad eventuali sottotitoli) ITA un ritardo pari a r0 e avvio il multiplexing;
- se r0=0, il file video generato sarà quasi sicuramente già sincronizzato, nel caso invece in cui ciò non sia verificato o se r0 è diverso da zero, apro l'mkv appena creato con MPC-HC e tramite l'opzione "spostamento audio(ms)", andando ad'occhio ed orecchio, trovo il giusto ritardo r1 che garantisca una perfetta sincronizzazione audio e video. A questo punto basterà modificare l'mkv precedentemente creato aggiungendo alla traccia audio ITA un ritardo pari a r1 e il gioco è fatto.
I pregi della suddetta procedura sono che è abbastanza semplice e veloce, e che, non richiedendo alcuna ricodifica (non sono un esperto, ma mi sembra di capire che il cambio di frame rate video ad opera di MKVToolNix avvenga senza ricodifica), consente di preservare la qualità delle tracce audio e video originali.
Un difetto potrebbe essere una sincronizzazione non rigorosa dovuta alle modalità "artigianali" per il calcolo di r1, ma sinceramente con l'esperienza acquisita nel tempo, anche nello scegliere le scene sui cui soffermarmi, ad occhio la sincronizzazione sembra perfetta.
Ovviamente questo metodo non funziona nel caso in cui le due versioni ITA e straniera del film sono caratterizzate da un montaggio diverso, per esempio un theatrical cut da una parte e un director's cut dall'altra; in questi casi ipotizzo che la cosa migliore sia utilizzare un software che consenta di comparare le due tracce audio per poi, tramite un'operazione di taglia e cuci, crearne una terza.
Il problema però è che a volte, nonostante le due versioni presentino lo stesso montaggio, il metodo sopra descritto non funziona, e audio e video risultano sempre sfasati tranne che in singoli punti. Per esempio sono adesso alle prese con un film che mi sta dando questo tipo di problema; di seguito riporto, se può essere utile, le informazioni sui due file generati con MediaInfo:
Codice:
General
Name : ###_versione_ENG
Format : MPEG-4
Format profile : Base Media
Codec ID : isom (isom/iso2/avc1/mp41)
File size : 1.71 GiB
Duration : 1 h 29 min
Overall bit rate : 2 730 kb/s
Encoded date : UTC 2018-02-17 23:53:08
Tagged date : UTC 2018-02-17 23:53:08
Writing application : Lavf57.83.100
Video
ID : 1
Format : AVC
Format/Info : Advanced Video Codec
Format profile : High@L4.1
Format settings : CABAC / 4 Ref Frames
Format settings, CABAC : Yes
Format settings, Reference : 4 frames
Codec ID : avc1
Codec ID/Info : Advanced Video Coding
Duration : 1 h 29 min
Bit rate : 2 500 kb/s
Width : 1 920 pixels
Height : 1 080 pixels
Display aspect ratio : 16:9
Frame rate mode : Constant
Frame rate : 23.976 (23976/1000) FPS
Color space : YUV
Chroma subsampling : 4:2:0
Bit depth : 8 bits
Scan type : Progressive
Bits/(Pixel*Frame) : 0.050
Stream size : 1.57 GiB (92%)
Writing library : x264 core 152 r2851M ba24899
Encoding settings : cabac=1 / ref=4 / deblock=1:-1:-1 / analyse=0x3:0x113 / me=umh / subme=9 / psy=1 / psy_rd=1.00:0.15 / mixed_ref=1 / me_range=24 / chroma_me=1 / trellis=2 / 8x8dct=1 / cqm=0 / deadzone=21,11 / fast_pskip=1 / chroma_qp_offset=-3 / threads=32 / lookahead_threads=4 / sliced_threads=0 / nr=0 / decimate=1 / interlaced=0 / bluray_compat=0 / constrained_intra=0 / bframes=3 / b_pyramid=2 / b_adapt=2 / b_bias=0 / direct=3 / weightb=1 / open_gop=0 / weightp=2 / keyint=250 / keyint_min=25 / scenecut=40 / intra_refresh=0 / rc_lookahead=50 / rc=2pass / mbtree=1 / bitrate=2500 / ratetol=1.0 / qcomp=0.60 / qpmin=0 / qpmax=69 / qpstep=4 / cplxblur=20.0 / qblur=0.5 / vbv_maxrate=31250 / vbv_bufsize=31250 / nal_hrd=none / filler=0 / ip_ratio=1.40 / aq=3:1.00
Encoded date : UTC 2018-02-17 23:53:08
Tagged date : UTC 2018-02-17 23:53:08
Codec configuration box : avcC
Audio
ID : 2
Format : AAC LC
Format/Info : Advanced Audio Codec Low Complexity
Codec ID : mp4a-40-2
Duration : 1 h 29 min
Bit rate mode : Constant
Bit rate : 224 kb/s
Channel(s) : 6 channels
Channel layout : C L R Ls Rs LFE
Sampling rate : 48.0 kHz
Frame rate : 46.875 FPS (1024 SPF)
Compression mode : Lossy
Stream size : 144 MiB (8%)
Language : English
Default : Yes
Alternate group : 1
Encoded date : UTC 2018-02-17 23:53:08
Tagged date : UTC 2018-02-17 23:53:08
Codice:
General
Name : ###_versione_ITA
Format : AVI
Format/Info : Audio Video Interleave
File size : 1.63 GiB
Duration : 1 h 22 min
Overall bit rate : 2 823 kb/s
Video
ID : 0
Format : AVC
Format/Info : Advanced Video Codec
Format profile : High@L3.1
Format settings : CABAC / 2 Ref Frames
Format settings, CABAC : Yes
Format settings, Reference : 2 frames
Codec ID : H264
Duration : 1 h 22 min
Bit rate : 2 423 kb/s
Width : 1 920 pixels
Height : 1 080 pixels
Display aspect ratio : 16:9
Frame rate : 50.000 FPS
Color space : YUV
Chroma subsampling : 4:2:0
Bit depth : 8 bits
Scan type : Progressive
Bits/(Pixel*Frame) : 0.023
Stream size : 1.40 GiB (86%)
Writing library : x264 core 125 r2208 d9d2288
Encoding settings : cabac=1 / ref=2 / deblock=0:0:0 / analyse=0x3:0x113 / me=dia / subme=7 / psy=1 / psy_rd=1.00:0.00 / mixed_ref=0 / me_range=16 / chroma_me=0 / trellis=1 / 8x8dct=1 / cqm=0 / deadzone=21,11 / fast_pskip=1 / chroma_qp_offset=-2 / threads=6 / lookahead_threads=1 / sliced_threads=0 / nr=0 / decimate=0 / interlaced=0 / bluray_compat=0 / constrained_intra=0 / bframes=2 / b_pyramid=0 / b_adapt=0 / b_bias=0 / direct=0 / weightb=0 / open_gop=0 / weightp=0 / keyint=500 / keyint_min=100 / scenecut=40 / intra_refresh=0 / rc=crf / mbtree=0 / crf=26.0 / qcomp=0.60 / qpmin=0 / qpmax=69 / qpstep=4 / ip_ratio=1.40 / pb_ratio=1.30 / aq=1:1.00
Audio
ID : 1
Format : AC-3
Format/Info : Audio Coding 3
Commercial name : Dolby Digital
Format settings : Dolby Surround
Codec ID : 2000
Duration : 1 h 22 min
Source duration : 1 h 22 min
Bit rate mode : Constant
Bit rate : 384 kb/s
Channel(s) : 2 channels
Channel layout : L R
Sampling rate : 48.0 kHz
Frame rate : 31.250 FPS (1536 SPF)
Compression mode : Lossy
Stream size : 227 MiB (14%)
Alignment : Aligned on interleaves
Interleave, duration : 32 ms (1.60 video frames)
Service kind : Complete Main
Utilizzando un frame rate di 50FPS ne risulta un video accelerato alla Benny Hill 😅, ho provato quindi a calcolarmi il giusto frame rate con la seguente formula da me ricavata:
FR=FR0*{1+(r2-r1)/[1000*(t2-t1)]}
dove:
- FR è il frame rate ricercato;
- FR0 è il frame rate della traccia video inglese;
- t1 e t2 è il tempo in secondi di due istanti del film;
- r1 e r2 sono i ritardi in ms per ottenere una sincronizzazione audio ITA e video ENG rispettivamente agli istanti t1 e t2.
Con il frame rate così ottenuto, c'è sincronizzazione sia al tempo t1 che al tempo t2, ma più ci si allontana da quegli istanti e più audio e video risultano fuori sincrono! 🤨
Come mai a volte capita che nonostante il film ITA e quello straniero abbiano (o almeno sembrino avere) lo stesso montaggio, il procedimento descritto all'inizio di questo post non funziona? E' possibile risolvere lavorando sulle tracce audio? Se sì, in che modo? E con quali software?