New Subtitles standard from Frank Klemm
Christian HJ Wiesner <[email protected]> Sat, 11 Oct 2003 11:28:23 +0200
| Newsgroups | gmane.comp.multimedia.matroska.devel,gmane.comp.multimedia.usf.devel |
|---|---|
| Message-ID | <[email protected]> |
Message from Frank about Subtitles ( a new standard ) :
Generische Methode, mit der man unter anderem Untertitel generieren kann.
Das, was angezeigt wird, entsteht durch die =DCberlagerung von Ebenen.
Von diesen Ebenen gibt es z.B. 256 St=FCck (oder eine flexible Anzahl).
Je h=F6her die Ebenennummer, um so h=F6her die Priorit=E4t bei der =DCber=
lagerung.
Ebene 0 ist typischerweise eine schwarze Fl=E4che.
Ebene 1 ist typsicherweise der eigentliche Film.
Ebene 2 bis 255 k=F6nnen f=FCr Untertitel benutzt werden.
Bereiche au=DFerhalb eines Bildes sind immer transparent.
Innerhalb des Bildes h=E4ngt es vom Bildformat und vom Bild ab.
Sinnvollerweise sind f=FCr Untertitel Bildformate und Bilder zu nutzen, d=
ie
Transparenz benutzen.
Beispiel:
Bildschirmgr=F6=DFe: 1920 x 1080 Pixel
Format des Filmes: 1920 x 816 Pixel MPEG-4
Untertitel: max. 1920 x 132 Pixel Bildformat, das Transparenz und 15 =
Farben definiert
Der schwarze Hintergrund braucht nicht explizit definiert zu werden. Er
liegt hinter allen Bildern. Er liegt in Layerebene 0 und ist schwarz.
Typischerweise auf Layer 1 liegt der Spielfilm. Er ist nur 1920 x 816 (AR=
:
1:2.35 gro=DF). Auf Layer 2 und gr=F6=DFer liegen z.B. Untertitel. Entwed=
er man
beschr=E4nkt sich auf den schwarzen Streifen unten oder man mu=DF f=FCr U=
ntertitel
ein Format benutzen, was Transparenz erlaubt.
Ein Bild bleibt so lange stehen, bis es gel=F6scht wird (im einfachsten F=
all
durch =DCberschreiben mit einem weiteren Bild der Gr=F6=DFe 0 x 0 Pixel).
Mit Untertitteln in zwei Layern (z.B. 2 und 3) kann man damit z.B.
bitrateneffektiv immer "alte" Teile stehen lassen, in dem man z.B.=20
wechselseitig auf zwei Layer schreibt.
klwjlkfhoqwiedkl
wqelfkplwqkfklwl <--- Film
wpqfkdqwkfpflwqe
Ich liebe Dich!
klwjlkfhoqwiedkl
wqelfkplwqkfklwl <--- Film
wpqfkdqwkfpflwqe
Ich liebe Dich!
(Sirenengeheul)
klwjlkfhoqwiedkl
wqelfkplwqkfklwl <--- Film
wpqfkdqwkfpflwqe
=20
(Sirenengeheul)
klwjlkfhoqwiedkl
wqelfkplwqkfklwl <--- Film
wpqfkdqwkfpflwqe
=20
(Sirenengeheul wird lauter)
klwjlkfhoqwiedkl
wqelfkplwqkfklwl <--- Film
wpqfkdqwkfpflwqe
...la=DF uns verschwinden =20
(Sirenengeheul wird lauter)
F=FCr jeden Layer kann man technisch gesehen beliebige Formate
benutzen:
- M-JPEG, MPEG-1, 2, 4 als Bild =09
R =3D R(Bild)
G =3D G(Bild)
B =3D B(Bild)
- M-JPEG, MPEG-1, 2, 4 als Transparenzmaps =09
T =3D a + b * R(Bild) + c * G(Bild) + d * B(Bild) a, b, c, d sin=
d neben dem Bild zu kodieren
if ( T < 0 ) T =3D 0
if ( T > 1 ) T =3D 1 Transparenz ist zwischen 0 und 1
R =3D R(Hiltergrund) * (1 - T) + R(Bild) * T
G =3D G(Hiltergrund) * (1 - T) + G(Bild) * T
B =3D B(Hiltergrund) * (1 - T) + B(Bild) * T
Hinter einem schwarzen Hintergrund ergibt bei a=3D1, b,c,d>=3D0 ein "M=
PEG-1,
2, 4 als Transparenzmaps" genau das gleiche Bild wie ein normales Bild=
.
- Bildformate, die keine Transparenz unterst=FCtzen.
Hier ist die Konstruktion eines Transparenzkanals =E4hnlich wie bei "M=
PEG-1,
2, 4 als Transparenzmaps" m=F6glich
- Bildformate, die von Natur aus Transparenz unterst=FCtzen
Das ist nat=FCrlich die eleganteste L=F6sung. Hiermut sind farbige Sch=
riften
und Antialising der Schrift m=F6glich.
- Text: Besonders f=FCr Bild=FCbertragungen mit geringen Bitraten, aber =
auch
f=FCr reine Audiosignale mit Songtexten sollte es m=F6glich sein, nich=
t
gerenderte Untertitel zu verwenden. Die Untertitel sollten dann nur no=
ch:
- Text (Unicode)
- Farbe (12 bit)
- Font (max. 4 Fonts sind zu definieren)
- Gr=F6=DFe
- Position
enthalten. Mit 300 bps erh=E4lt man so sinnvolle Untertitel.
BTW ist PNG vergleichsweise einfach zu dekodieren. Das die meisten
Anzeigeprogramme auf Tr=E4gheit optimiert sind, t=E4uscht viele dar=FCber=
hinweg,
das MPEGs wesentlich aufwendiger zu dekodieren sind.
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D
Beispiele:
Untertitel mit morphenden Buchstaben: MPEG-1, 2, 4 als Transparenzmaps
Bewegende Untertitel: MPEG-1, 2, 4 als Transparenzmaps
Normale S/W Untertitel: 1-bit PNGs
Normale S/W Untertitel mit Antialiasing:2-bit PNGs
Probleme:
Richtig problematisch werden solche Dinge erst, wenn man verschieden gro=DF=
e
Pixel f=FCr die Layer zulassen will. Bild hat z.B. 352 x 288er Aufl=F6sun=
g,
Untertitel, damit nicht so pixelig, haben 720 x 576 Pixel.
-- Frank Klemm