Video e sottotitoli · Toolkit sottotitoli
Spiegazione della deriva dei sottotitoli: perché un offset fisso fallisce e come funziona l'allungamento
· Come funziona
sottotitoli codici temporali frame-rate
Se i sottotitoli vanno bene all'inizio e tardano alla fine, il problema è la velocità, non l'offset. Questo post spiega come le discrepanze del frame-rate causano la deriva, come diagnosticarla e come i calcoli di un allungamento lineare differiscono da uno spostamento.
Sincronizzato al primo minuto, mezzo secondo in ritardo al minuto trenta: la firma della deriva piuttosto che dello spostamento
Ci sono due diversi difetti dietro i sottotitoli non sincronizzati e necessitano di correzioni opposte. Uno spostamento è costante: ogni riga è in ritardo della stessa quantità e il file è sbagliato tanto nel primo minuto quanto nell'ultimo. La deriva aumenta: le linee di apertura atterrano correttamente, l'errore è appena percettibile dopo dieci minuti e le linee di chiusura sono alla deriva di pochi secondi. Il sintomo che li separa è se l'errore alla fine è maggiore dell'errore all'inizio.
Sbagliare questa diagnosi è costoso perché l’azione ovvia peggiora le cose. Allineando la prima riga di un file alla deriva con un offset si sposta l'intero file, quindi la fine si sposta della quantità originale più qualunque cosa sia stata appena aggiunta. Lo strumento lo documenta direttamente come un errore comune e rileva che entrambe le operazioni devono essere annullate prima del ridimensionamento.
Da dove viene la deriva: un file cronometrato per 25 fps riprodotto contro un video 23.976 fps o viceversa
La causa più comune è una mancata corrispondenza del frame rate tra il momento in cui è stato creato il file e il video con cui viene riprodotto. I timestamp dei sottotitoli sono gli orari dell'orologio, ma spesso derivano dal conteggio dei fotogrammi. Se un conteggio di fotogrammi prodotto rispetto a materiale 23.976 fps viene riprodotto come se ogni fotogramma fosse un venticinquesimo di secondo, ogni timestamp è sbagliato nello stesso rapporto e un rapporto costante applicato a un numero crescente produce un errore crescente.
Questo rapporto è all'incirca 1.0427 per materiale da 23.976 fps riprodotto a 25 fps, che lo strumento indica accanto al campo della scala. Il numero non è una manopola di sintonia scoperta sperimentalmente: è il quoziente dei due frame rate, quindi un file che era corretto in un mondo viene sistematicamente allungato o compresso nell'altro. Questo è il motivo per cui la deriva è quasi sempre fluida e lineare anziché irregolare.
Diagnosi della deriva con due punti di riferimento: misurazione dell'errore vicino all'inizio e vicino alla fine
Per diagnosticare la deriva sono necessarie due misurazioni, non una. Trova una riga di dialogo vicino all'inizio di cui puoi cronometrare con precisione la didascalia, e un'altra verso la fine, e registra per ciascuna il timestamp rivendicato dal file e il timestamp in cui si verifica effettivamente il dialogo. Una misurazione non può distinguere i due difetti, perché un singolo errore osservato è coerente sia con un offset costante che con uno stiramento.
Scegli i due punti il più distanti possibile dal materiale. L'intero calcolo divide una differenza per un'altra, quindi una linea di base breve rende grande un piccolo errore di misurazione nel risultato. Due punti al minuto di distanza in un file di novanta minuti produrranno un rapporto sicuro con una precisione che la misurazione non supporta.
I calcoli di un allungamento lineare: ridimensionare ogni timecode in base a un rapporto anziché aggiungere una costante
Uno spostamento è un'addizione e uno stiramento è una moltiplicazione, e questa è l'intera differenza. Lo spostamento aggiunge una costante ad ogni inizio e fine; internamente i segnali sono numeri interi in millisecondi contati da zero, quindi l'operazione è una singola addizione per timestamp e non introduce alcun arrotondamento. Poiché aggiunge lo stesso numero ovunque, non può modificare la distanza tra il primo segnale e l'ultimo, che è proprio ciò che la deriva ha sbagliato.
Un allungamento moltiplica ogni timestamp per un fattore, misurato a partire da zero. Poiché il moltiplicatore agisce su un numero maggiore più avanti nel file, sposta la fine più dell'apertura, che è la deviazione della forma necessaria. I timestamp vengono arrotondati nuovamente ai millisecondi interi dopo il ridimensionamento, quindi una scala non è perfettamente reversibile come lo è uno spostamento; ridimensionare una volta dall'originale anziché perfezionare un fattore in più passaggi.
Esempio pratico: calcolo del rapporto tra due misurazioni: trasformazione di due errori osservati in un'unica correzione
Supponiamo che la didascalia a due minuti affermi 00:02:00.000 mentre il dialogo è a 00:01:59.750 e la didascalia a cinquantotto minuti affermi 00:58:00.000 mentre il dialogo è a 00:57:52.750. In millisecondi il file dice 120000 e 3480000; il video richiede 119750 e 3472750. L'errore è aumentato da 250 ms a 7250 ms, che è una deriva, non un offset.
Il fattore è il rapporto tra i due intervalli: dividere l'intervallo reale 3472750 meno 119750 o 3353000 per l'intervallo dichiarato 3480000 meno 120000 o 3360000. Il risultato è circa 0.99792. Moltiplicando i tempi dichiarati per restituisce 119750 e 3472750, entrambe le misurazioni, che è la verifica che la correzione sia un tratto puro senza offset residuo. Quando rimane un residuo, correggere prima l'allungamento e solo dopo applicare uno spostamento per ciò che rimane.
Ciò che questo non copre: tagli, scene aggiunte e interruzioni pubblicitarie, che producono salti anziché derive fluide
Questo copre gli errori che crescono in modo graduale e proporzionale. Non copre un file corretto per venti minuti e poi improvvisamente un importo fisso per il resto, che è la firma di una modifica: una scena rimossa, un'interruzione pubblicitaria inserita o un taglio diverso dello stesso film. Questo difetto è uno spostamento applicato a una parte del file e nessun rapporto singolo lo risolve.
Lo strumento Shift si applica a ogni cue nel file e non offre alcun modo per riprogrammare un intervallo selezionato, quindi un file con un salto nel punto medio non può essere riparato in un solo passaggio. Inoltre, non può riprendersi dal blocco: un risultato negativo è pari a zero perché nessuno dei due formati può esprimere un tempo negativo, e lo spostamento in avanti successivamente non ripristina i segnali che erano bloccati lì. Lo strumento avvisa quando una stecca si blocca e il rimedio documentato è l'annullamento anziché uno spostamento di compensazione.
Conclusione: spostamento per offset, scala per deriva: come utilizzare la funzione di retime di Subtitle Toolkit per il caso di offset fisso e dove controllare l'elenco "Cosa non farà questo strumento" prima di fare affidamento su di esso per la deriva
Spostarsi per un offset, scalare per la deriva e misurare prima di eseguire entrambe le operazioni. Inserisci l'offset in millisecondi, perché il campo non ha secondi o input di timecode e digitando 2 si sposta il file di due millisecondi anziché di due secondi; l'operazione ha esito positivo, il file cambia effettivamente e la sincronizzazione appare esattamente errata come prima. Un offset positivo ritarda i sottotitoli che appaiono prima del dialogo.
Per la deriva, utilizzare il fattore di scala accanto all'offset anziché spostare ripetutamente l'offset. Leggi i limiti della pagina dello strumento prima di fare affidamento su di esso: l'annullamento mantiene le ultime venti operazioni, i segnali bloccati possono ridursi a durata zero o allungarsi quando è stata bloccata solo un'estremità e la convalida viene eseguita nuovamente dopo ogni modifica in modo che tali casi vengano segnalati anziché spediti silenziosamente.