Converti, risincronizza e pulisci file di sottotitoli SRT e VTT nel browser.
SubRip (.srt) proveniva da un programma di ripping DVD nei primi anni 2000 ed è diventato il formato predefinito dei sottotitoli quasi per caso. WebVTT (.vtt) è stato progettato in seguito, specificamente per i video HTML5, ed è ciò che un browser si aspetta quando si allega un elemento traccia a un video.
Sembrano così simili che le persone pensano che rinominare il file sia sufficiente. Non lo è, e l'errore è silenzioso: un browser ha consegnato un file SRT rinominato in .vtt di solito non mostrerà nulla, senza errori che ne spieghino il motivo.
Innanzitutto, l'intestazione. Un file WebVTT deve iniziare con la parola letterale WEBVTT sulla prima riga. Un file SRT non ha intestazione e inizia direttamente con la prima cue. Questa singola riga mancante è il motivo più comune per cui un file convertito fallisce silenziosamente in un browser.
Secondo, il separatore dei millisecondi. SRT scrive 00:00:01,500 con una virgola. WebVTT scrive 00:00:01.500 con un punto. Un giocatore che si aspetta l'una e gli viene data l'altra solitamente rifiuterà la stecca.
Terzo, la numerazione delle cue. I segnali SRT sono convenzionalmente numerati con una riga contenente solo un numero intero prima di ciascun timestamp. In WebVTT quell'identificatore è facoltativo e, se presente, può essere una stringa qualsiasi anziché un numero.
Ci sono anche differenze minori: WebVTT consente di omettere il componente orario, quindi 01:30.000 significa novanta secondi e supporta le impostazioni di posizionamento dopo il timestamp come line:90% align:center. Questo strumento legge tutti questi e preserva le impostazioni dei segnali durante la conversione in VTT.
Carica il tuo file (il formato viene rilevato automaticamente dall'intestazione WEBVTT), quindi scaricalo nel formato che preferisci. I tempi sono mantenuti internamente come numeri interi in millisecondi, quindi la conversione è esatta e la conversione avanti e indietro non accumula deriva.
I numeri delle cue vengono rinumerati in modo contiguo da 1 durante l'esportazione. Se il file sorgente presentava lacune o duplicati nella numerazione, cosa comune nei file modificati manualmente, l'output è pulito.
Ogni file viene controllato al caricamento e i risultati vengono visualizzati sopra l'anteprima. Ogni messaggio nomina il numero di cue specifico, perché "questo file non è valido" è inutile quando il file ha novecento cue.
Gli errori sono vere e proprie rotture: una cue che finisce prima di iniziare, una cue che inizia prima della precedente o un timestamp che non è stato possibile leggere affatto. Gli avvisi sono cose tecnicamente valide ma solitamente non intenzionali: un segnale di durata zero che non apparirà mai sullo schermo o due segnali che si sovrappongono in modo che vengano visualizzati entrambi contemporaneamente.
Una cue malformata non interrompe l'intero file. Il blocco danneggiato viene segnalato e i cue rimanenti continuano a caricarsi, quindi puoi vedere la portata del problema in un passaggio invece di correggere gli errori un arresto anomalo alla volta.
I file di sottotitoli spesso contengono markup: tag simili a HTML come <i> e <b>, classe WebVTT e tag vocali come <c.loud> e <v Speaker> e SubStation sovrascrive blocchi come {\an8} che controllano il posizionamento.
Il pulsante "Rimuovi tag di formattazione" li rimuove tutti preservando le interruzioni di riga all'interno di ogni segnale, che sono importanti per la leggibilità. Le entità carattere come & vengono deliberatamente lasciate da sole, perché sono contenuto anziché formattazione.
I sottotitoli non sincronizzati sono disponibili in due varietà distinte e l'applicazione della soluzione sbagliata peggiora le cose. Trascorri trenta secondi a fare la diagnosi prima di toccare qualsiasi cosa.
A CONSTANT OFFSET significa che i sottotitoli sono sbagliati nella stessa quantità ovunque. Controlla una linea vicino all'inizio e una linea vicino alla fine. Se entrambi sono in ritardo di circa due secondi, è necessario un turno.
DRIFT significa che l'errore aumenta durante la riproduzione del video. Se la prima riga è quasi esatta ma l'ultima riga è a quaranta secondi di distanza, uno spostamento non aiuta: è necessario ridimensionare. La deriva deriva quasi sempre da una mancata corrispondenza del frame rate: i sottotitoli sono stati cronometrati rispetto a una versione di 23.976 fps e il video viene eseguito a 25 fps o viceversa.
Immettere l'offset in millisecondi. Un numero positivo ritarda i sottotitoli, che è ciò che vuoi quando appaiono troppo presto. Un numero negativo li sposta prima, per i sottotitoli che restano indietro rispetto al dialogo.
Misurare l'errore anziché indovinare. Nota il timestamp in cui una riga viene effettivamente pronunciata e il timestamp in cui appare attualmente, quindi usa la differenza. Due secondi sono 2000 ms.
I timestamp sono bloccati a zero. Né SRT né WebVTT possono rappresentare un tempo negativo e un giocatore che ne riceve uno in genere rifiuterà la stecca o si comporterà in modo imprevedibile. Pertanto, se sposti un file indietro di un valore superiore all'ora di inizio della prima cue, le cue interessate vengono bloccate su 00:00:00 anziché diventare negative e lo strumento ti dice esattamente a quante cue si sono verificate. Se vedi questo avviso, probabilmente il tuo offset è troppo grande.
Il ridimensionamento moltiplica ogni timestamp per un fattore costante, che è la soluzione corretta per la deriva.
Il fattore è il rapporto tra i frame rate. Convertire i sottotitoli temporizzati per 23.976 fps in un video 25 fps significa moltiplicare per 25 ÷ 23.976, circa 1.0427. Andando nella direzione opposta, usa 23.976 ÷ 25, circa 0.959.
Se non conosci il frame rate, puoi ricavare il fattore dalla deriva stessa: dividi l'ora corretta dell'ultima riga per l'ora corrente. Applicalo, quindi controlla nuovamente entrambe le estremità.
L'unione riguarda il materiale sottotitolato in parti, ad esempio le due metà di un film distribuite come file separati.
Carica prima il file principale, quindi scegli il secondo file nel pannello di unione e assegnagli un offset. L'offset è il punto in cui inizia la seconda parte nella sequenza temporale combinata: se la prima parte viene eseguita per 58 minuti e 20 secondi, l'offset è 3,500,000 ms.
Le cue di entrambi i file vengono combinate e riordinate in base all'ora di inizio, quindi il risultato è sempre in ordine valido anche se l'offset si sovrappone leggermente ai due set. Tutto viene rinumerato da 1.
La divisione fa il contrario, dividendo un singolo file in un timestamp scelto.
Per impostazione predefinita, la seconda parte viene ribasata in modo che inizi da zero, che è ciò che desideri quando verrà riprodotta su un file video separato che inizia anch'esso da zero. Le cue vengono assegnate alla parte contenente il loro tempo di inizio, quindi una cue che si trova a cavallo del punto di split va con la parte in cui è iniziata anziché essere tagliata a metà.
Entrambe le parti vengono scaricate contemporaneamente, denominate -part1 e -part2. Se il punto di divisione scelto lascia una parte vuota, lo strumento te lo dice invece di produrre silenziosamente un file vuoto.