close

Universal undertekstformat

Gå til navigation Gå til søg

Universal Subtitle Format ( USF) på spansk "Universal Subtitle Format", er et ambitiøst projekt skabt for at give et rent, dokumenteret, kraftfuldt og brugervenligt undertekstformat. Formatet er baseret på XML af mange grunde: fleksibilitet, menneskelig læsbarhed, portabilitet, unicode-understøttelse, systemhierarki og nem administration.

Introduktion

Målet med Universal Subtitle Format er at skabe et nyt format ved at tage det bedste, der findes i undertekstformater i dag.

Formatet skal være fleksibelt nok til at kunne bruges til hverdagsundertekstning såvel som mere avancerede undertekstningsprojekter. Nøglen til projektet er at levere en række værktøjer og specifikationer til at forbedre kvaliteten af ​​undertekstede videoer ved at forhindre processen med at kode underteksterne sammen med videoen, da det skaber et stort kvalitetstab på grund af underteksternes kontrast. Også formateringen er designet, så brugeren kan ændre standardstilen såsom skriftstørrelse, farve osv. ved afspilning.

Funktioner og fordele

  • XML - baseret for bedre fleksibilitet og interoperabilitet.
  • Let at lære syntaks, tæt på HTML .
  • Tidsbaseret for at undgå problemer med konvertering af videobilleder .
  • 4 typer elementer:
    • tekst
    • billede
    • karaoke
    • form (rektangel,...)
  • Kraftfuldt elementpositioneringssystem.
    • 9 typer justering (TopLeft,..., MiddleCenter,..., BottomRight).
    • Relateret til vinduet eller videoen.
    • Vandret og lodret margen i pixel eller procentdel af videoen/vinduet.
  • Brugbare tekstattributter pr. bogstav.
    • farve
    • kursiv, fed, understregning
    • størrelse
    • skrifttype
  • Definerbar stil til hurtigere globale ændringer.
  • Metainformation for at øge lager-/søgningsfaciliteter.
    • titel (titel)
    • forfatter (forfatter)
    • sprog ( ISO 639-2 plus én brugerdefineret)
    • dato (dato)
    • kommentar (kommentar)

Formatets syntaks

En XML-fil kan ses som et træ med en rod, grene og noder.

<rodnode> +-rodnode
  <node> |
    <subnode/> +-node
  <node> |
</rootnode> +-undernode

Roden af ​​USF-træet kaldes "USFSubtitles".

<USFSubtitles version="1.0"> +-USFSubtitles (1)
                                    @-Version 1)
  <metadata>...</metadata> +-metadata (1)
  <styles>...</styles> +-styles (0..1)
  <effekter>...</effects> +-effekter (0..1)
  <subtitles>...</subtitles> +-undertekster (1..N)
</USFSubtitles>

Mellem parenteserne det mulige antal elementer. (1: påkrævet, 0..1: valgfrit, 1..N: mindst én, 0..N).
@ er mærket for en attribut.

Version-attributten bruges af afspilleren til at identificere, hvilke funktioner der bruges i den aktuelle fil. Versionen vil blive udvidet i fremtiden, hvis der er behov for nye funktioner.

Metadata

Metadata -noden er ret selvforklarende.

<metadata> +-metadata
  <title>Min film</title> +-titel (1)
  <forfatter> +-forfatter (1..N)
    <name>Mit navn</navn> | +-navn (1)
    <email>[email protected]</email> | +-e-mail (0..1)
    <url>http://www.mysite.com</url> | +-url (0..1)
    <task>oversætter</task> | +-opgave (0..1)    
  </forfatter> |
  <language code="eng">Spansk</language> +-sprog (1)
                                              | @-kode (1)
  <languageext code="DirectorComments"> +-languageext (0..1)
    Toff kommentarer</languageext> | @-kode
  <date>ÅÅÅÅ-MM-DD</date> +-dato (0..1)
  <comment>min kommentar</comment> +-kommentar (0..1)  
</metadata>

Sprogkodeattributten er standardiseret ( ISO 639-2 ), se Koder til repræsentation af navne på sprog for en komplet liste.
Andre eksempler:

<language code="fre">Français</language>
<language code="eng">Engelsk</language>
<language code="deu">Tysk</language> kan også være "ger".

Sprogudvidelsen (languageext) skal være defineret i denne liste: Normal, Hearing Impaired, DirectorComments, Forced, Children.

Datoen bruger den internationale datostandard ( ISO 8601 ).

ÅÅÅÅ-MM-DD :
  - ÅÅÅÅ: firecifret år (2006, 2007)
  - MM : tocifret måned (01=januar osv.)
  - DD : tocifret dag i måneden (01 til 31)
eksempel: 2006-08-25

Grundlæggende tags (i, b, u, font, br) kan bruges i kommentarelementet, disse bruges til at formatere teksten som kursiv, fed, understregning osv.

Stilarter

Det er valgfrit at definere stilarter, men det vil gøre dine undertekster mere strukturerede og nemmere at vedligeholde.

<stile>
  <style name="MyStyleName">
    <fontstyle face="Arial"
               family="sans-serif"
               størrelse="24" eller størrelse="+1" (+10 %)
               color="#AARRGGBB"
               vægt="fed"
               kursiv = "ja"
               underline="nej"
               alpha="0-100"
               back-color="#AARRGGBB"
               outline-color="#AARRGGBB"
               outline-level="2"
               shadow-color="#AARRGGBB"
               shadow-level="4"
               wrap="no|auto"/>
    <position alignment="TopLeft"
              horizontal-margin="10"
              vertical-margin="20%"
              relativ-to="Window"
              rotate-x="0-359"
              rotate-y="0-359"
              rotate-z="0-359"/>
  </style>
  ...
</styles>

Typografier bruges til at definere indstillinger, der gælder for en gruppe af tekstoverskrifter.
En typografi har en påkrævet navneattribut, det er navnet, der vil blive brugt som reference senere. Alle andre attributter er valgfrie.

<stile>
  <style name="MyStyleName"><fontstyle color="#FF0000" /></style>
</styles>
...
<undertekst>
  <text style="MyStyleName">din første teksttekst</text>
</subtitle>
<undertekst>
  <text style="MyStyleName">din anden teksttekst</text>
</subtitle>

Hvis du ændrer stilen kaldet "MyStyleName", bliver du nødt til at ændre begge linjer.

I afspilleren er en standardstil defineret, den bruges, hvis der ikke er angivet en stilart. Alternativt kan du fjerne denne standardstil ved at bruge navnet "Standard":

<style name="Default><fontstyle size="36"/></style>

Al styling er nedarvet fra standardstylingen (afspillerens eller den, der er blevet omdefineret).

Dette er det anvendte hierarki:

  +------------------------------+
  |Intern standard-stil |
  +-----------+-----------+
              |
  +-----------+-----------+              
  |Omdefineret standardstil|
  +-----------+-----------+              
              +--------------------------------+
  +-----------+-----------+ +-----------+-----------+
  | Ny stil 1 | | Ny stil 2 | ...
  +-----------------------------+ +-----------------------------+
  • Skrifttype

Familieattributten angiver en prioriteret liste over skrifttypefamilienavne eller generiske efternavne.
Dette er nogle eksempler:

family="Times, 'Times New Roman', serif"
family="Helvetica, Arial, sans-serif"
family="'Courier New', Courier, monospace"
family="'Comic Sans MS', cursive"

Som du kan se, anbefales det, at man angiver en generisk skrifttypefamilie efter enhver navngiven skrifttype som et alternativ til en foretrukken familie af skrifttyper; en serif , sans-serif , monospace , kursiv eller fantasi. ( Generiske skrifttypefamilier )

Farver er defineret som i HTML, med 3 komponenter, rød, grøn og blå i området 0,255 kodet i hexadecimal.
Så ren rød er #FF0000 , ren grøn er # 00FF00 , og ren blå er #0000FF .

Farven kan udvides med en 4. komponent, en alfakomponent, der angiver farvens gennemsigtighed. En alfa-komponentværdi på 255 angiver, at farven er gennemsigtig, og en alfaværdi på 0 angiver, at farven er uigennemsigtig. Alfa-komponentværdier fra 1 til 254 angiver, i hvilken grad farven blander sig med baggrunden. Når du skriver #FF0000 er det faktisk #00FF0000 en kedelig rød farve. For at lave en gennemsigtig rød farve skal du skrive, for eksempel #7FFF0000 .

Alfa-attributten kan bruges til at skalere alfa-komponenten af ​​alle farver, f.eks . farve="#40FFFFFF" og alpha="50" vil oversætte til color="#A0FFFFFF" .

"farve" er forgrundsfarven på teksten eller fremhævelsesfarven i karaoketilstand.
"bagfarve" er den farve, der bruges i karaoke, når teksten ikke er fremhævet.

Skrifttypevægten skal defineres i dette interval:

"normal|fed|dristigere|lettere|100|200|300|400|500|600|700|800|900"
'normal' er det samme som '400'.
'fed' er det samme som '700'.
lettere og dristigere introducerer et begreb om arv.
  • Position

Attributten "alignment" har 9 mulige værdier:

  Øverst til venstre | TopCenter | Øverst til højre
  --------------+----------------+-------------
  Mellemvenstre | Mellem center | Mellem højre
  --------------+----------------+-------------
  Nederst til venstre | BundCenter | Nederst til højre

Attributten "relative-to" har to mulige værdier: "Window" eller "Video".

Marginerne er defineret i pixels eller i procent af vinduet eller videoen afhængigt af, hvad der er valgt i relativ-til-attributten.

Rotation er defineret i grader. Forskellige rotationsakser kan bruges til at skabe en slags 3D-effekt.

    Y^Z
     | /
     | /
     | /
     |/
 ----+-----------> X
    /|

Den almindelige rotation, der bruges i 2D, er Z-aksen.
For at skrive tekst diagonalt fra nederste venstre hjørne til øverste højre hjørne kan du f.eks. bruge:

    <position alignment="BottomLeft"
              horizontal-margin="10"
              vertical-margin="10"
              relativ-to="Window"
              rotate-z="45"/>

Effekter

Effekter betragtes stadig som ufuldstændige eller under udvikling.
Dette er en idé, du definerer nogle key-frames, og afspilleren interpolerer den nødvendige frame for at lave animationen.
Eksempel:

    <effekter>
    <effect name="50%-ZoomIn-ZoomOut">
        <keyframes>
            <keyframe position="0%"><fontstyle size="1"/></keyframe>
            <keyframe position="50%"><fontstyle size="24"/></keyframe>
            <keyframe position="100%"><fontstyle size="1"/></keyframe>
        </keyframes>
    </effekt>
    <effect name="FadeInFadeOut">
        <keyframes>
            <keyframe position="$start"><fontstyle alpha="100"></keyframe>
            <keyframe position="$start+500"><fontstyle alpha="0"></keyframe>
            <keyframe position="$end-500"><fontstyle alpha="0"></keyframe>          
            <keyframe position="$end"><fontstyle alpha="100"></keyframe>
        </keyframes>
    </effekt>   
    <effect name="HScrolling">
        <keyframes>
            <keyframe position="0%"><position alignment="BottomRight" horizontal-margin="-$elemwidth"/></keyframe>
            <keyframe position="100%"><position alignment="BottomLeft"/></keyframe>
        </keyframes>
    </effekt>       
  </effekter>

Erstat $start, $end med placeringen af ​​key-frames.

Attributter, der kan "animeres":

<positionsjustering, horisontal-margin, vertikal-margin, relativ-til/>
<fontstyle size, color, alpha, outline-color, outline-level, shadow-color, shadow-level/>

Undertekster

Det er den væsentlige del af filen, den del, hvor indholdet af underteksterne er placeret.

<undertekster> +-undertekster (1..N)
  <language code="eng">Spansk</language> +-sprog (1)
                                              | @-kode (1)
  <languageext code="DirectorComments"> +-languageext (0..1)
    Kommentarer af Toff</languageext> | @-kode
  <undertekst +-undertekst (1..N)
    start="hh:mm:ss.mmm" @-start (1)
    stop="hh:mm:ss.mmm" @-stop (0..1)
    duration="hh:mm:ss.mmm"> @-varighed (0..1)
    <text></text> +-tekst (0..N)
    <image></image> +-billede (0..N)
    <karaoke></karaoke> +-karaoke (0..N)
    <shape></shape> +-form (0..N)
    ...
  </subtitle>
  ...
</subtitles>

En undertekst har 2 tidsstempler-attributter: start og stop.
Tidsstempler bruger følgende format:

hh : tocifret time (00-23)
mm : tocifret minut (00-59)
ss : tocifrede sekunder (00-59)
mmm : trecifrede millisekunder (000-999)

I stedet for at bruge et stop-tidsstempler kan du bruge duration-attributten.
Det er også tilladt at bruge et kort tidsstempel: ss[.mmm]

100.000 -> 00:01:40.000
1.100 -> 00:00:01.100
5.500 -> 00:00:05.500

Indholdet af en undertekst kan være sammensat af forskellige elementer: tekst, billede eller karaoke i et hvilket som helst antal.

Alle elementer kan placeres uafhængigt med de samme positionsattributter som stilene: "alignment", "horizontal-margin", "vertical-margin" og "relative-to".

  • Tekst
<text effect="MyEffectName" style="MyStyleName" speaker="JorSol">
  <i>Kursiv</i><b>Fed</b><u>Understregning</u><br/>
  <font face="Arial" size="16" color="#FF0000"
        outline-color="#00FF00"
        outline-level="2"
        shadow-color="#AAAAAA"
        shadow-level="4"
  >Tekst i rødt i Arial 16</font>
</tekst>

Tekstelementer er defineret af en delmængde af XHTML .
Alle tilgængelige tags bruges i eksemplet ovenfor.
En særlig bemærkning til HTML-brugere, XHTML er en smule strengere end HTML .

I XHTML skal du angive, at et tag er et tomt tag,
så linjeskiftet bruger tagget "<br/>" i stedet for "<br>".

Etiketten skal indlejres korrekt:
<b><i>Dette er </b>det forkerte eksempel.</i>
<i><b>Dette er </b>det rigtige eksempel.</i>

XHTML skelner også mellem store og små bogstaver:
<i>Dette er korrekt</i>, <I>Dette er forkert</I>
  • Billede

"Billede"-elementet tilføjer understøttelse for at inkludere billeder i videoen, ligesom hvis de var undertekster, understøttes normalt eller rettere kun Bitmap .

<image alpha="0-100" colorkey="#RRGGBB">Image_file_name</image>

Billedet skal være i samme mappe eller i en undermappe til undertekstfilen.

"colorkey"-attributten er den farve, der vil blive gjort gennemsigtig i billedet, så en værdi på #FFFFFF vil gøre alle hvide dele af billedet gennemsigtige.

  • karaoke

Karaoke-elementet minder meget om tekstelementet. Den største forskel er, at der bruges et særligt <kt="duration_in_ms"/> tag .

Så i eksemplet nedenfor har teksten "sang" en varighed på 400ms, "cool" har en varighed på 300ms...

<subtitle start="00:00:10,000" stop="00:00:11,000">
  <karaoke><kt="100"/>en <kt="400"/>sang <kt="200"/>meget <kt="300"/>fed</karaoke>
</subtitle>

Summen af ​​alle varigheder skal være lig med varigheden af ​​underteksten.
Her 100 + 400 + 200 + 300 = 1000ms = 1s

  • Form (skarp)

"Sharpe"-elementet betragtes som ufuldstændigt eller under udvikling (og endda forladt).

Et grundlæggende eksempel på, hvordan det kan bruges, er:

<shape type="rectangle" width="160" height="120"/>

I de seneste uofficielle forslag er "sharpe"-elementet blevet droppet til fordel for USFxSVG, for at bruge SVG -vektorgrafik på en ordentlig, men begrænset måde sammenlignet med det. (Se USFxSVG-forslag 4 )

Et eksempel

<?xml version="1.0" encoding="UTF-8"?>

<USFSubtitles version="1.0">
  <metadata>
    <title>Eksempel på det universelle undertekstformat</title>
    <forfatter>
      <name>JorSol</name>
      <email>[email protected]</email>
      <url>http://en.wikipedia.org/</url>
    </forfatter>
    <language code="eng">Spansk</language>
    <dato>2006-02-01</date>
    <comment>Dette er et kort USF-eksempel.</comment>
  </metadata>

  <stile>
    <!-- Her omdefinerer vi standardstilen -->
    <style name="Standard" >
      <fontstyle face="Arial" size="24" color="#FFFFFF" back-color="#AAAAAA" />
      <position alignment="BottomCenter" vertical-margin="20%"
                relative-to="Window" />
    </style>
        
    <!-- Alle andre stilarter er nedarvet fra standard-->
    <style name="NarratorSpeaking">
      <fontstyle italic="ja" />
    </style>
    
    <style name="LetrasMusica">
      <fontstyle back-color="#550000" color="#FFFF00" bold="ja" />
    </style>
  </style>
  
  <undertekster>
    <subtitle start="00:00:00.000" stop="00:00:05.000">         
      <text alignment="MiddleCenter">Velkommen til
        '''Wikipedia på spansk'''</text>
      <image alignment="TopRight" vertical-margin="20" horizontal-margin="20"
             colorkey="#FFFFFF">WP_Logo.bmp</image>
    </subtitle>
    
    <subtitle start="00:00:06.000" stop="00:00:10.000">
      <text style="NarratorSpeaking" speaker="JorSol">Hej! Dette er en <font size="16">
        lille</font> eksempel, lad os synge en sang.</text>
    </subtitle>
    
    <subtitle start="00:00:06.000" stop="00:00:10.000">
      <karaoke style="LetrasMusica"><kt="700"/>La! Det! Det! <kt="1000"/>
        Karaokeeeeeeeee <kt="100"/>er <kt="200"/>sjovt!</text>
    </subtitle>
  <undertekster>
  
</USFSubtitles>

Referencer

Det meste af denne artikel er baseret på den seneste officielle USF-specifikation og kan downloades fra USF's hjemmeside. [1]

Andre kommentarer

Den seneste officielle specifikation er fra 2003-06-18 og betragtes som et udkast, så oplysningerne i denne artikel kan blive ugyldige i fremtiden, men i øjeblikket er udviklingen i en næsten nultilstand, og de fleste af de eksisterende implementeringer er baseret på dette specifikation.

Se også

Eksterne links