Mux audio video negli MKV
La qualità del codec H264 è altissima, specialmente se si rippa da BD (Blu-Ray Disc) a 1080P con bitrate adeguato; la differenza ad occhio è pressochè nulla con un netto calo delle dimensioni iniziali.
Cercando su e giu nella rete spesso è difficile trovare TUTTI i film in MKV (720P o 1080P), in italiano (mi riferisco a quelli più rari), o meglio il film spesso si trova in italiano in definizione standard (max 480P) e in altre lingue in HD…. ma noi vogliamo la qualità migliore nel nostro idioma… quindi via di mux!
Ci sono vari software adatti allo scopo, io utilizzo questi:
- AviDemux – Per estrarre la traccia audio dagli AVI.
- MKVToolNix – Per inserire tracce audio e video in un MKV, tagliare e molto altro.
- MKVExtractGUI – Per estrarre le singole tracce da un MKV
- Yamb – Per estrarre le singole tracce da un MP4
Procuratevi la versione HD (MKV, MP4) del filmato interessato in qualsiasi lingua e la versione italiana in qualsiasi formato (AVI, MKV, MP4, etc) con audio di qualità, magari AC3 (Dolby) per una migliore qualità, alla peggio MP3 va bene ugualmente, l’importante è evitare tracce audio PESSIME registrate dal cinema e via dicendo.
Estrarre la traccia video HD
Avviate MKVExtractGUI, aprite poi l’MKV che ci interessa: vedrete che ogni traccia ha una sua ID con un numero, a noi interessa tenere solo la prima, quella video.
Selezionate il percorso ed estraete la traccia (in formato H264).
Se il contenitore in questione è un MP4 utilizzate Yamb.
Estrarre la traccia audio in italiano
Avviate Avidemux e aprite il file che con l’audio italiano; se sono presenti più tracce andate su Audio – Select Track e selezionate quella corretta, poi sempre dal menù Audio selezionate Save Audio dando nome ed estensione corretta alla traccia, esempio italiano.ac3.
Infine andate su File – Information ed annotatevi la velocità dei fotogrammi (FPS) del video (solitamente 25).
Anche se è possibile, NON cambiate mai la velocità del file audio ma adattetegli sempre il video modificandone il frame rate.
Ok! Ora avete il video HD e la traccia audio italiana… vediamo di muxare tutto al meglio 🙂
Eseguiamo il Mux e controlliamo la sincronia
Ora con MKVToolNix aggiungete la traccia video (H264) e quella audio (AC3, MP3, DTS, AAC) ed eseguite il muxing.
Fate attenzione che il FPS dell’H264 corrisponda con quello del video da cui abbiamo estratto l’audio.
Ora molto probabilmente l’audio non sarà subito sincronizzato col video, vediamo come rimediare.
Ora aprite due sessioni di AviDemux in parallelo:
- Una col nostro MKV appena muxato
- L’altra col video dal quale avete estratto l’audio
Ora portatevi in un punto a vostra scelta, ma ben preciso del film, dove c’è un cambio di scena, e muovendovi frame per frame, spostandovi con le frecce sinistra e destra, trovate lo stesso fotogramma in entrambi i video.
Ora annotatevi i tempi in quel frame, esempio:
- MKV appena muxato siamo a 00:35:16.849
- Altro video 00:34:59.745
Quindi col nostro MKV siamo avanti con l’audio di 17 secondi e 104 millesimi (per essere precisissimi), ora tramutateli in millisecondi e diventano 17104.
Ora con i dati corretti procediamo nuovamente al Mux 🙂
Con MKVToolNix selezioniamo la nostra traccia audio, andiamo su Opzioni specifiche formato e nella casella Ritardo (in ms) impostiamo 17104; ovviamente è possibile mettere anche anticipare l’audio mettendo segno negativo prima del numero, esempio -4587.
A fine operazione dovreste avere il vostro MKV finalmente con l’audio perfettamente sincronizzato… ma purtroppo non sempre è così, vediamo perchè.
Versioni estese e TV RIP
Come dicevo non sempre tutto va subito a buon fine.
Se le versioni da cui abbiamo preso audio e video sono uguali abbiamo già finito; ma se invece vogliamo muxare con una versione estesa (quindi con scene extra) oppure con un TV Rip la cosa si complica non poco.
Con le versioni estese c’è da fare un lavoro notevole di editing audio PRIMA, in modo da togliere l’audio delle scene che non sono presenti.
Lo stesso dicasi all’inverso (video più lungo), dovreste tagliare queste scene in più in modo da adattarle all’audio più breve.
In TV fra pubblicità e stacchi quasi sempre mal fatti, si perdono frame a destra e a manca, e tutto va fuori sincrono.
Ergo se trovate versioni analoghe (DVD, BR) non sfasciatevi la testa inutilmente.
Dando per scontato quanto detto sopra, ovvero che il frame rate del video sia corretto, bisogna procedere fino al punto dove avviene l’asincronia (solitamente in presenza di un cambio di scena) e tagliare il file subito prima.
Con MKVToolNix, andiamo nella scheda Globale, poi nella sezione Suddivisione spuntate Abilita suddivisione e dopo questa durata e impostate il minuto, esempio 00:55:00 per tagliare dopo 55 minuti.
Prendete la prima parte in sincronia e mettetela in una directory assegnandogli un nome a vostro piacimento ma con un numero identificativo alla fine, es. miofilm001.mkv in modo da metterli in ordine temporale.
Ora partendo dal pezzo del film rimanente (fuori sincrono), fate quanto detto sopra per individuare il ritardo e impostatelo con MKVToolNix, muxate e cercate nuovamente dove (eventualmente) il filmato và per l’ennesima volta fuori sincronia.
Procedete in questo modo fino alla fine, è un lavoro lungo e richiede una notevole dose di pazienza.
Ora dovreste avere più file, spezzettati, ognuno singolarmente (e finalmente direi!) in sincronia 🙂 con i numeri finali sequenziali, 001 e via dicendo.
Supponiamo di avere 10 spezzoni, per farne un unico filmato dobbiamo utilizzare la funzione Apponi di MKVToolNix per aggiungere tutte le parti dalla seconda in poi.
Ora il vostro filmato è finalmente a posto con l’audio in perfetta sincronia.
Pubblicato il 30 marzo 2013, in Audio e Video, Software con tag avidemux, mkv sincronia, mkvtoolnix, mux audio mkv, mux video mkv, yamb. Aggiungi il permalink ai segnalibri. 38 commenti.
Ciao, innanzitutto grazie e complimenti per questa guida così ben fatta e chiara. Ho incontrato un problema però: i file .mkv che modifico, quando li metto su chiavetta e provo a farli partire sulla TV … non partono. Mi esce fuori il messaggio “Formato file non supportato”, eppure prima della modifica la TV li leggeva! Sapresti trovarmi una soluzione? Grazie, e ancora complimenti.
Controllato la compressione dell’header?
In effetti no, credevo la impostasse in automatico … devo mettere “nessuna compressione”?
Ok perfetto ho risolto tutto era proprio quello. Grazie mille di nuovo
Prego
La guida a quanto capisco è valida per i video/film/telefilm dove l’unico problema è il delay. Ma quando il ritardo cambia in più parti del video? Tu in pratica lo stretch non lo calcoli ed usi direttamente il secondo metodo (spezzettare il video e sincronizzarlo pezzo per pezzo) ?
Ecco i dati corretti:
720p ENG @25fps(convertito. L’originale è a 23.976 fps)
Durata totale: 2:43:28.640 (ore:minuti:secondi.millisecondi)
480p ITA @25fps
Durata totale: 2:44:12.680 (ore:minuti:secondi.millisecondi)
Tempo 1° cambio di scena, video 720p(ENG):
00:01:26.440 (ore:minuti:secondi.millisecondi)
Tempo 1° cambio di scena, video 480p(ITA):
00:01:27.560 (ore:minuti:secondi.millisecondi)
Ergo… l’audio ITA deve essere anticipato con un delay = -1120 ms
Facendo il mux, l’audio è fuori sincrono sin da subito 😦
Quindi…
Ho preso i dati di un altro cambio di scena(vero la fine del filmato). Quello che in teoria serve per calcolare lo stretch di cui ho parlato in un precedente commento:
Tempo 2° cambio di scena, video 720p(ENG):
02:37:55.160 (ore:minuti:secondi.millisecondi)
Tempo 2° cambio di scena, video 480p(ITA):
02:38:06.680 (ore:minuti:secondi.millisecondi)
Si calcola un delay= -11520
SE i due filmati avessero un problema di sincronia solo ed esclusivamente per un ritardo o un anticipo dell’audio da muxare, anche nella seconda scena il delay doveva essere -1120 ms. Dato che invece è aumentato di 10 volte il suo valore, significa che la sincronia varia nel corso del filmato. Correggimi se sbaglio…
Domanda finale: A questo punto… che si fa?
Grazie anticipatamente!
Ciao … ho ancora un problema (lo so sono proprio un disastro). Mi è già successo con un paio di file diversi, ho questo video in inglese che va a 23.976215 fps, e lo stesso in italiano a 23.976023 fps. Ho estratto la traccia video dal primo file e quella audio dal secondo, messo tutto in MKVmerge GUI, impostando il framerate a 23.976023 fps, ma quando apro il file muxato con VLC l’audio non è sincronizzato. O meglio, all’inizio è sincronizzato … ma dopo un po’ si desincronizza sempre di più … e infatti nelle informazioni mi dice che il video ha ancora 23.976215 fps. Sono giorni che provo di tutto (ho anche provato a mettere l’opzione framerate a 24000/1001p, che dovrebbe essere proprio 23.976023 fps), ma non è cambiato nulla. Non è che sapreste dirmi qualcosa?
Altra prova… altro mistero!
Ho tagliato un pezzo di filmato (in teoria lo stesso identico) sia per quanto riguarda il file video HD, sia per quello SD.
Eccome come ho agito.
1. Con AviDemux ho cercato il primo cambio di scena. Una volta trovato… sono andato avanti fino al successivo. Arrivato al secondo cambio di scena mi sono fermato ed ho appuntato il timecode. Stesso identico procedimento l’ho eseguito con il file SD.
2. Con mkmerge ho selezionato “dividi dopo time code” ed inserito il timecode appuntatomi prima, per il filmato HD(=00:01:47.800).
2. Con mkmerge ho selezionato “dividi dopo time code” ed inserito il timecode per il filmato SD(=00:01:48.920).
3. In questo modo ho tagliato il primo spezzone che mi interessa sia dal file HD che dal file SD.
4. Ho eseguito un mux VIDEO ENG HD + AUDIO ITA SD inserendo per la traccia AUDIO ITA un delay di -1120 ms (=il delay per il primo cambio scena).
Risultato?
Audio fuori sincrono!!! grrrrrrrrr
HELP!!!
Ciao, secondo me forse sbagli qualcosa, perlomeno nella primissima parte impostando il giusto delay deve essere in sincronia.
Il problema, come dicevo nella guida, nasce quando il filmato va fuori sincrono in più punti e ci ritrova alla fine di esso un delay molto superiore (come nel tuo caso); pertanto devi armarti di pazienza e fare il lavoro a spezzoni: devi fare più tagli del filmato fintanto che resta in sincronia, tagli e lavori sullo spezzone successivo reimpostando di volta in volta tutti delay. Alla fine avrai il filmato in sincrono ma diviso in svariate partil basterá fare un merge finale e il filmato sarà unico e, finalmemte, in sincronia.
Come ho detto a Narlo probabilmente devi fare anche tu il lavoro a spezzoni.
Ok grazie proverò a fare così
@backlab
Prima di tutto…GRAZIE per la risposta e la disponibilità.
Riguardo l’oggetto del commento…
Be’… infatti quello che proprio mi fa impazzire è quest’ultima prova che ho fatto. Ovvero il taglio della prima parte. Uno spezzone di 50 MB !!!
Com’è possibile che anche lì non riesco a sincronizzarlo?!!?! Il delay è -1120 ms. C’è poco da fare. E’ quello!
Ti do qualche altra informazione che, spero, potrà esserti utile per darmi qualche dritta/consiglio.
Allora…
FILE HD:
VIDEO COMPLETO HD = 02:43:28.640
AUDIO COMPLETO HD ENG = 02:43:28.463
FPS? 25 (originariamente 23.976)
FILE SD:
VIDEO COMPLETO SD = 02:44:12.680
AUDIO COMPLETO SD ITA = 02:43:41.800
A me serve SINCRONIZZARE…
VIDEO COMPLETO HD con AUDIO COMPLETO SD ITA
Se hai domande o ti serve qualche altra info, chiedi!
P.S. Altro dettaglio: questo non è il primo mux che faccio, quindi un po’ so lavorarci. Generalmente ho sempre agito sull’audio (solo delay o in molti casi delay+stretch). Tu, invece, lo stretch lo sconsigli.
@simone
Nel tuo caso dato che inizialmente è in sincro e successivamente cambia… significa che il delay è corretto ma con il passare del tempo(=con l’andar avanti del filmato) il delay aumenta oppure diminuisce.
Puoi agire in due modi:
1. Spezzetti il video e vai calcolando di volta in volta il delay. Questo metodo non l’ho mai usato. Non so dirti di preciso in quali pezzi devi tagliare il video. Teoricamente – come ha scritto backlab nel suo articolo – in un cambio di scena oltre il quale l’audio va fuori sincrono.
@blacklab
Il problema è: come farlo a riconoscerlo? Devi vederti tutto il film o puoi tagliare a prescindere il filmato in – supponiamo – 10 parti e sarai sicuro che se farai tutto il lavoro l’audio sarà sincronizzato?
@simone
2. Il secondo metodo è quello sconsigliato da blacklab. Te lo riassumo brevemente, con la speranza di non commettere errori.
Prendi il primo cambio di scena(primi minuti del film) e ti appunti il time code. Stesso lavoro(con lo stesso cambio di scena) per il file SD. Questo di darà il valore del delay.
Poi, scorri il video fino alla fine e prendi i dati di un altro cambio di scena.
Questa volta non ti interessa il delay, bensì il time code del cambio di scena del file HD ed il time code del cambio di scena SD.
A questo punto un po’ di calcoli…
Diff HD = timecode HD scena 2 – timecode HD scena 1
Diff SD = timecode SD scena 2 – timecode SD scena 1
Stretch = Diff HD / Diff SD
Adesso nella traccia audio ITA su mkvmerge, dovrai inserire il valore di delay ed il valore di stretch appena calcolato.
Effettui il mux e provi.
SE l’audio dovesse continuare ad essere fuori sincro, dovrai necessariamente seguire il primo metodo perché significa che c’è “qualche fotogramma di troppo o in meno” e non puoi rimediare semplicemente “stiracchiando” l’audio…
Scusami in anticipo se ho commesso qualche errore ma ultimamente con i mux sono un po’ arrugginito 😦
si ma quando ci sono multidelay questo metodo non puo’ essere usato perche’ per quante volte spezzetti e rimetti a posto l’audio sara’ sempre fuori sincro.sento in giro che il metodo migliore è usando audacity
Non hai letto tutta la guida, vero? In fondo ho spiegato come sistemare quando l’audio va fuori sincrono in più punti.
Io ancora non ho risolto… Nei forum specializzati consigliano audacity oppure i vari programmi per l’editing video… 😑😤
Se qualcuno vuole darmi qualche consiglio o indicazione/prova da fare… È ben accetto!
Grazie!
Ciao, come si fa a calcolare il ritardo audio, una volta che sono arrivato nello stesso fotogramma in entrambi i video e ho preso i due tempi?
Salve, sono riuscito a muxare un video in inglese ed un audio italiano senza problemi seguendo le istruzioni. Ora mi trovo di fronte ad un problema con un secondo video nell’eseguire la stessa operazione. Dopo il mux, dall’inizio del filmato per 48 minuti successivi tutto ok, dopodiché comincia un lieve sfasamento audio/video per cui il filmato non è più in sincrono fino alla fine. Come rimediare? Grazie.
Salve, è descritto nell’ultima parte che riporto:
“… bisogna procedere fino al punto dove avviene l’asincronia (solitamente in presenza di un cambio di scena) e tagliare il file subito prima.
Con MKVToolNix, andiamo nella scheda Globale, poi nella sezione Suddivisione spuntate Abilita suddivisione e dopo questa durata e impostate il minuto, esempio 00:55:00 per tagliare dopo 55 minuti.
Prendete la prima parte in sincronia e mettetela in una directory assegnandogli un nome a vostro piacimento ma con un numero identificativo alla fine, es. miofilm001.mkv in modo da metterli in ordine temporale.
Ora partendo dal pezzo del film rimanente (fuori sincrono), fate quanto detto sopra per individuare il ritardo e impostatelo con MKVToolNix, muxate e cercate nuovamente dove (eventualmente) il filmato và per l’ennesima volta fuori sincronia.
Procedete in questo modo fino alla fine, è un lavoro lungo e richiede una notevole dose di pazienza.
Ora dovreste avere più file, spezzettati, ognuno singolarmente (e finalmente direi!) in sincronia 🙂 con i numeri finali sequenziali, 001 e via dicendo.
Supponiamo di avere 10 spezzoni, per farne un unico filmato dobbiamo utilizzare la funzione Apponi di MKVToolNix per aggiungere tutte le parti dalla seconda in poi.
Ora il vostro filmato è finalmente a posto con l’audio in perfetta sincronia.”
Ti ringrazio veramente molto, nonostante qualche noia data dall’inesperienza ho raggiunto il risultato che volevo.
É stato un piacere, a rileggerti presto.
Ciao Blacklab grazie per l’ottima guida. 🙂
Arrivo al dunque : ho muxato con MKVmerge GUI un video mp4 (inglese), con una traccia audio italiana AAC proveniente da un file sempre mp4, ma di qualità video inferiore. Ora purtroppo la durata dei due file, pur trattandosi di una medesima puntata naturalmente, è diversa, una dura 43:12, l’altra 41:26
Come posso sistemare il ritardo del mio unico file mkv ottenuto, utilizzando lo stesso MKVmerge ?
grazie
Ciao, la differenza è data da frame rate diversi, ho fatto un calcolo al volo e sembra che quello più corto sia a 25 fps mentre l’altro a 23,976.
Da quale file hai preso l’audio ? Ricorda che non va mai toccato, è la traccia video che va adattata, pertanto se l’audio proviene dal filmato più breve devi velocizzare l’altra traccia video e viceversa.
Sì è così, devi impostare il file video a 25 FPS senza toccare l’audio. Quasi tutti gli mkv hanno gli FPS a 23 mentre i normali avi sono a 25, ecco perché la durata dello stesso filmato risulta diversa. Io sto prendendoci la mano con diversi film che sto trovando o che avevo: scarico gli mkv a 720p o 1080p originali (in inglese) e poi i dvdrip (avi) dello stesso film in italiano. Poi la procedura di estrazione audio (avidemux) e video (mkvExtractGui) quindi il remux con MKVmerge. Penso sia uno dei metodi migliori per poter avere un video in alta definizione (moltissimi titoli ancora non esistono da noi) con l’audio italiano (che si tratti di ac3 o mp3). In alcuni casi riesco ad applicare l’audio italiano e con l’impostazione a 25 fps del video non debbo toccare nulla, altre volte capita di dover spezzettare i più parti il filmato perché magari per una cinquantina di minuti va bene, poi comincia ad andare fuori sincrono. Una volta preso il via, il meccanismo scorre abbastanza facilmente.
Esatto, per l’esattezza sono 23,976 fps.
Ciao.
allora, scusate il ritardo. 🙂 Quindi posso semplicemente modificare mettendo al video nella finestra Opzioni Specifiche Formato, FPS : selezionando nella finestrella 25 fps ?
poi estraggo la traccia audio (mka) dal filmato italiano e poi remuxo il tutto ??
grazie
In linea di massima sì, senza alterare l’audio (solitamente è in ac3 o mp3, con avidemux controlla bene la codifica), selezioni 25 nella finestrella FPS e procedi al remux del filmato. Dopodiché dai una controllata al file muxato da capo a fondo in vari punti, può capitare che per una quarantina di minuti va tutto bene poi comincia ad andare fuori sincrono. In questo caso comincia a dividere in frammenti il filmato selezionando la divisione per durata in mkvmerge (esempio: 00:42:30 come valori, il filmato verrà diviso ogni 42 minuti e 30”; dopo il primo blocco in cui va tutto bene dovrai regolarti con il ritardo o l’anticipo in millisecondi della traccia audio per i successivi frammenti fuori sincrono). Può anche capitare, anche se piuttosto raramente, che ti vada tutto bene al primo tentativo.
Invece è andato tutto bene al primo tentativo, l’audio è perfettamente sincronizzato dal primo all’ultimo minuto. Ho praticamente modificato semplicemente FPS della traccia video a 25 con mkverge. Solo che c’è un piccolo fastidiosissimo problema: su due televisori diversi su di uno si sente in continuazione un rumore come di un vinile che si inceppa in continuazione ma il video fila liscio; su di un altra questo difetto audio non c’è ma il video va a piccoli scatti. Credo il tutto dovuto a questo cambiamento di fps. Sapete se si può risolvere in qualche modo il problema ?
grazie
Su questo non saprei cosa dirti. Ho eseguito diversi mux finora ma non sono mai incappato in fastidi audio/video. Non credo c’entri molto il fatto del cambiamento fps, credo si tratti di un problema di altra natura.
Strano, se tutto è stato fatto a dovere non dovrebbe darti problemi.
Su PC funziona regolarmente?
In che formato è la traccia audio che hai muxato?
Ecco, questo è un controllo da poter fare: ti sei assicurato di aver estratto l’audio dal file in italiano nello stesso formato? Esempio: se l’originale nelle info di avidemux risulta un ac3, sarebbe preferibile salvare la traccia chiamandola “ita.ac3”, idem se si tratta di un mp3.
entrambi i file sono mp4, mentre le tracce audio entrambe AAC. Forse un problema dei telivisori ?..non capisco proprio
Prova con un contenitore diverso, come MKV.
Non credo che il problema stia nel formato audio, in ogni caso è sempre possibile convertirle in mp3 o ac3.
allora il problema è del codec audio. Con un avi da cui ho preso la traccia mp3 i problemini con i televisori non ci sono più. Ora però ce ne è un altro (aaaaaiuto!!). Stranamente l’FPS dell’avi è di 23,976, proprio come il file mp4 da cui voglio prendere la traccia video. Solo che una volta muxato il tutto c’è comunque ritardo!
Come spiegato più volte è possibile che, nonostante il frame fate identico, l’audio è il video siano fuori sincrono; ad esempio lo stesso film, con lo stesso fps può risultare completamente asincrono perché magari uno è preso dalla versione bluray mentre l’altro è un TV RIP HD. Cose che succedono.
Cerca un altro file audio oppure dovrai fare più parti, rimetterle in sincronia e infine unirle. Nella guida è spiegato tutto.
Sinceramente ho incontrato anch’io un problema analogo e, come dice backlab, in questo caso le cose si complicano un pochino e l’unico sistema è quello di armarsi di infinita pazienza e frammentare il film anche in parti da poco più di un minuto, un lavoraccio scellerato. Purtroppo, per quel che ne so, non so consigliare altro sistema in merito.
Ciao, ho il framerate audio e video diverso, cosa posso fare?