Gå til hovedindholdet
SubtitleMatrix

TTML til CSV

Eller indsæt underteksttekst

Hvad denne konvertering ændrer

3 ting frasorteres eller kræver en beslutning

  • Formatering

    al formatering (fed, kursiv, farve, kontur, skygge)

  • Placering

    placering på skærmen (hver tekstblok vender tilbage til standardpositionen)

  • Formatspecifikt indhold

    indhold, som kildeformatet beholder uden for sine tekstblokke (blokke, der ikke er tekstblokke, headertekst, indstillinger pr. tekstblok, kommenterede hændelser) – målformatet har ingen plads til det

Denne liste kommer fra kapabilitetsmatricen for disse to formater, ikke fra den konkrete fil, du indlæste. En bestemt fil kan miste mere, hvis den bruger egenskaber, som formatet tillader, men matricen ikke modellerer.

Denne side konverterer en TTML (Timed Text)-fil til CSV Spreadsheet. TTML og CSV skriver begge tiden som 00:00:01.000, men CSV lægger start og slut i hver sin kolonne.

Når TTML bliver CSV, følger dette ikke med: formateringen, placeringen og formatets særindhold. Rapporten over filfeltet viser tabene, før du vælger en fil, og tæller dem per fil, når filen er læst.

En fil eller en hel sæson: køen behandler filerne i rækkefølge, du kan afbryde undervejs, og resultaterne hentes samlet som én ZIP-fil. Hele konverteringen kører i browseren – filen forlader aldrig din computer.

Eksempler

En typisk TTML-fil konverteret til CSV

Input

<?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

start,end,text
00:00:01.000,00:00:03.500,Hello <i>there</i>.
00:00:03.500,00:00:06.000,"How are you?
Fine, thanks."

Tidskoderne skrives om fra 00:00:01.000 til 00:00:01.000; ordene og rækkefølgen er den samme. Sammenlign de to filer linje for linje.

Samme konvertering på en beskidt TTML-fil

Input

<?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 &amp; Jerry.</p>
    </div>
  </body>
</tt>

Resultat

start,end,text
00:00:01.500,00:00:03.500,Loaded from an offset and a duration.
00:00:04.000,00:00:06.500,A coarser clock spelling.
00:00:07.000,00:00:08.480,"Frames, at 25fps."
00:00:09.000,00:00:11.000,"<font color=""#FF0000"">Half-open</font> and Tom &amp; Jerry."

Sådan ser beskadigede filer ud i virkeligheden – blandede linjeskift, løse mellemrum og tomme felter. Sammenlign med det pæne eksempel ovenfor for at se, hvad TTML-læseren tilgiver, før filen skrives som CSV.

Ofte stillede spørgsmål

Hvordan skrives den samme tid i TTML og CSV?

TTML og CSV skriver begge tiden som 00:00:01.000, men CSV lægger start og slut i hver sin kolonne.

Hvad går tabt, når TTML bliver CSV?

Når TTML bliver CSV, melder kapacitetstabellen: formateringen, placeringen og formatets særindhold. Teksten og tidslinjen bevares. I målformatet skriver CSV start og slut som to kolonner med punktum i millisekunderne. Rapporten over filfeltet viser tabene, før du vælger en fil, og tæller dem per fil, når filen er læst.

Kan CSV rumme det, som TTML gemmer uden for tekstblokkene?

Nej. TTML gemmer prolog, <head>, style- og regiondefinitioner uden for tekstblokkene. CSV har ingen tilsvarende blokke. Derfor rapporteres indholdet uden for tekstblokkene som tab, når TTML bliver CSV.

Hvordan håndteres en beskidt TTML-fil, før den bliver CSV?

Når TTML bliver CSV, læses kilden sådan: Frametal læses via ttp:frameRate og frameRateMultiplier; en <p> uden egen begyndelsestid arver ikke fra <div> og droppes med en note. Sådan skrives resultatet: Filen skrives som en tabel med overskriftsrække og anførselstegn om nødvendigt.

Hvordan skrives tekstblokkene som CSV-rækker, når TTML bliver CSV?

Når TTML bliver CSV, får hver tekstblok en række med start, slut og tekst, og overskriftsrækken navngiver kolonnerne. Felter med komma eller citationstegn sættes i anførselstegn efter RFC 4180, så cellerne ikke forskydes. TTML skriver tider som begin- og end-attributter; formatet accepterer både 00:00:01.000, 1.5s og frame-tal som 00:00:01:12. Tider skrives med punktum.

Bliver min TTML-fil uploadet, når jeg laver CSV?

Nej. Både læsningen af TTML og skrivningen af CSV sker i browseren, så intet af teksten, tiderne eller tagsene sendes i en anmodning. Du kan lægge en hel sæson ind, afbryde undervejs og hente resultaterne som én ZIP-fil; når siden er indlæst, virker den også uden net.

Relaterede værktøjer