TTML til LRC
Eller lim inn underteksttekst
Hva denne konverteringen endrer
5 ting slippes eller trenger en avgjørelse
- Tider
tekstblokkenes sluttider (resultatformatet registrerer bare når en tekstblokk starter)
- Formatering
all formatering (fet, kursiv, farge, kontur, skygge)
- Plassering
plassering på skjermen (hver tekstblokk går tilbake til standardposisjonen)
- Presisjon
tidspresisjon — resultatets klokke er grovere, så hvert tidsstempel rundes av til nærmeste 10 ms
- Formatspesifikt innhold
innhold som kildeformatet oppbevarer utenfor tekstblokkene (blokker utenom tekstblokkene, topptekst, innstillinger per tekstblokk, kommenterte hendelser) — målformatet har ingen plass til det
Denne listen kommer fra egenskapsmatrisen for disse to formatene, ikke fra den bestemte filen du lastet inn. En bestemt fil kan miste mer hvis den bruker egenskaper formatet tillater, men matrisen ikke modellerer.
Slipp inn en TTML-fil på denne siden, og du får den tilbake som LRC, med tidsstemplene skrevet om og teksten i behold.
Det er en reell forskjell på TTML og LRC: sluttidene forsvinner, fordi LRC bare lagrer når en linje starter — spilleren holder linjen oppe til neste linje begynner; all formatering forsvinner — fet, kursiv, farge, omriss og skygge; plasseringen forsvinner, og hver tekstblokk faller tilbake til standardplassen; den siste desimalen forsvinner, fordi klokken i LRC runder hvert tidsstempel til nærmeste 10 ms; LRC har ingen plass til innholdet TTML oppbevarer utenfor tekstblokkene.
Listen over filboksen er regnet ut fra hva TTML og LRC kan uttrykke, ikke fra filen din, så svaret er det samme før du laster opp noe.
En hel sesong med TTML-filer går gjennom LRC-konverteringen i én kjøring: hver fil behandles for seg, du kan avbryte underveis, og resultatene lastes ned som én ZIP.
Fordi TTML-til-LRC-konverteringen kjører lokalt i nettleseren, forlater filen din aldri maskinen.
Eksempler
En typisk TTML-fil konvertert til LRC
Inndata
<?xml version="1.0" encoding="UTF-8"?>
<tt xmlns="http://www.w3.org/ns/ttml" xmlns:tts="http://www.w3.org/ns/ttml#styling" xml:lang="en">
<head>
<styling>
<style xml:id="s1" tts:color="#FFFF00" tts:fontWeight="bold"/>
</styling>
<layout>
<region xml:id="bottom" tts:origin="10% 80%" tts:extent="80% 20%"/>
</layout>
</head>
<body>
<div>
<p begin="00:00:01.000" end="00:00:03.500" region="bottom" style="s1">Hello <span tts:fontStyle="italic">there</span>.</p>
<p begin="00:00:03.500" end="00:00:06.000" region="bottom">How are you?<br/>Fine, thanks.</p>
</div>
</body>
</tt>
Resultat
[00:01.00]Hello there.
[00:03.50]How are you?
[00:03.50]Fine, thanks.
Dette går tapt i utdataen: sluttidene, formatering, plassering, tidspresisjon og metadata. Starttidene beholdes med hundredels presisjon; sluttidene utledes fra neste linje.
Samme TTML-til-LRC-konvertering med vanskelig inndata
Inndata
<?xml version="1.0" encoding="UTF-8"?>
<tt xmlns="http://www.w3.org/ns/ttml" xmlns:tts="http://www.w3.org/ns/ttml#styling"
xmlns:ttp="http://www.w3.org/ns/ttml#parameter"
ttp:frameRate="25" xml:lang="en">
<body>
<div>
<p begin="1.5s" dur="2s">Loaded from an offset and a duration.</p>
<p begin="4s" end="00:00:06.50">A coarser clock spelling.</p>
<p begin="00:00:07:00" end="00:00:08:12">Frames, at 25fps.</p>
<p begin="9s"><span tts:color="#FF0000">Half-open</span> and Tom & Jerry.</p>
</div>
</body>
</tt>
Resultat
[00:01.50]Loaded from an offset and a duration.
[00:04.00]A coarser clock spelling.
[00:07.00]Frames, at 25fps.
[00:09.00]Half-open and Tom & Jerry.
Slik ser skader på ekte filer ut — blandede linjeskift, løse mellomrom, tomme felt. Sammenlign med det ryddelige eksempelet over for å se hva TTML-parseren tilgir.
Ofte stilte spørsmål
Hva går tapt når TTML blir LRC?
Dette: sluttidene forsvinner, fordi LRC bare lagrer når en linje starter — spilleren holder linjen oppe til neste linje begynner; all formatering forsvinner — fet, kursiv, farge, omriss og skygge; plasseringen forsvinner, og hver tekstblokk faller tilbake til standardplassen; den siste desimalen forsvinner, fordi klokken i LRC runder hvert tidsstempel til nærmeste 10 ms; LRC har ingen plass til innholdet TTML oppbevarer utenfor tekstblokkene. På kildesiden har TTML XML-elementer med stiler, plassering og millisekunder; på målsiden har LRC bare starttider med hundredels presisjon, og derfor kommer de nevnte tingene ikke med. Teksten og rekkefølgen kommer over.
Hvordan skrives tidsstemplene om fra TTML til LRC?
En tid i TTML ser slik ut: `begin="00:00:04.126"` og `end="…"`. I LRC skrives den som `[00:04.12]` — hundredeler, og bare starttiden. LRC lagrer bare starttiden, så det finnes ingen sluttid i filen; spilleren holder linjen oppe til neste linje begynner. Rekkefølgen er den samme, og ingen tekstblokk flyttes mer enn avrundingen tilsier.
Hvordan får en tekstblokk fra TTML en sluttid i LRC?
LRC har ingen sluttid: en spiller holder linjen oppe til neste linje begynner. Derfor skrives TTML-tekstblokken som en starttid med hundredels presisjon, og sluttiden kastes — den er en opplysning TTML har som LRC ikke kan lagre.
Hva skjer med formateringen fra TTML i LRC?
Stiltabellen og de innebygde taggene i TTML forsvinner: LRC har ingen stiltabell og skriver rå tekst, så fet, kursiv og farge blir bare vanlige tegn.
Hvordan ser en LRC-fil ut når den er laget fra TTML?
LRC har metadata-tagger som `[ti:]` og `[ar:]`, deretter én tidsstemplet linje per sanglinje. Konverteringen fra TTML fyller den formen: hver tekstblokk blir én LRC-blokk, i samme rekkefølge, med TTML-ens tekst delt i de samme linjene.
Kan jeg konvertere LRC tilbake til TTML, og hva går tapt da?
Ja, og den veien har sin egen tap-liste: sluttidene blir genererte, fordi LRC ikke lagrer dem — de utledes fra neste linjes starttid. Det er ikke den samme listen som TTML → LRC, fordi de to formatene beholder ulike ting.
Beholder LRC plasseringen som TTML beskriver?
Nei. TTML kan plassere en tekstblokk på skjermen, men LRC har ingen posisjonsmodell, så hver tekstblokk faller tilbake til spillerens standardplass; posisjonen står i tap-listen.
Hva gjør LRC med en tekstblokk fra TTML som har flere linjer?
Den beholder linjene. TTML og LRC uttrykker begge flere linjer per tekstblokk, og konverteringen skriver linjeskiftet som flere tidsstemplede linjer med samme starttid i stedet for å slå sammen teksten.
Hva skjer med kommentarer og metadata i TTML når filen blir LRC?
TTML kan ha XML-prologen og stil- og layoutdefinisjonene i `<head>` utenfor tekstblokkene. LRC har metadata-taggene i hodet: tittel, artist, lengde og offset; derfor registreres dette som tap, og det er tekstblokkene som kommer med videre.
Blir tidsstemplene nøyaktige i konverteringen fra TTML til LRC?
TTML har 1 ms oppløsning og LRC 10 ms, så hvert tidsstempel rundes til nærmeste 10 ms; en tekstblokk flyttes aldri mer enn 5 ms.