SMIL™ on World Wide
Web Consortiumin (W3C) suosittelema määritys esitysvoimaisen, interaktiivisen
multimediasisällön reaaliaikaiseen jakeluun World Wide Webissä ja myös ns.
matalakaistaisilla yhteyksillä. SMILin kehitti CD-ROMin, interaktiivisen television,
webin ja audio- sekä video-streamingin tuotantoja edustava ryhmä. Ryhmässä
vaikuttaneita yhtiöitä ovat Digital Equipment, Lucent, Microsoft, Netscape,
Philips, ja RealNetworks, samoin kuin tutkimusorganisaatiot kuten Columbia
University, CWI, and INRIA.
SMIL (Synchronized Multimedia Integration Language) on XML-pohjainen
kieli. Sitä käytetään
hallitsemaan esitysten multimediaelementtejä, jotka kaipaavat informaatiota
staattisen layoutin ja tahdistetun audio- sekä videomateriaalin suhteen. Yleisimmin
SMILiä käytetään toisiaan täydentävien teksti- ja kuvaelementtien layoutin
määrittämiseen streaming-videoesityksissä, jotka toistetaan RealPlayerillä tai
Windows Media Playerillä. XML-pohjaisena kielenä se soveltuu WML:n ja XHTML:n
tavoin kuitenkin myös pienlaitteisiin.
SMIL-tiedostot ovat
HTML-dokumenttien tapaan tekstipohjaisia, joten niiden koodaukseen kelpaa
normaali tekstinkäsittelyohjelma tai HTML-editori. Tiedostot tallennetaan .smil
-tiedostotarkenteella. SMIL-esitykset voivat sisältää teksti-, grafiikka-,
ääni-, animaatio- ja videotiedostoja.
SMIL-kielen
elementtien määrä on suppeahko. Kaikilla elementeillä on kuitenkin joukko
attribuutteja, jotka mahdollistavat elementtien joustavan käytön. Täydellisellä
SMIL -tagien yhdistelmällä esityksessä voidaan määritellä mitä tahansa
eksaktista, pikselintarkasta näytön asemoinnista animaatioiden ajastukseen ja
vuorovaikutteisen videon sekä audion tahdistukseen. Pienlaitteissa ja MMS:n
alkuvaiheissa vain yksinkertainen perus-SMIL -alaryhmä tageja oli tuen
piirissä. Ainakin Nokian uudemmat MMS -päätelaitteet tukevat jo myös ns. 3GPP
SMIL profiilia, joka perustuu SMIL -kielen 2.0 -versioon (mistä katsaus
jäljempänä).
Elementtien
määrittely noudattaa XML-syntaksia, joten ne määritellään aloittavan ja
lopettavan tagin pareina. Elementit voivat olla myös ns. tyhjiä, jolloin
lopetus merkitään suoraan /> -merkinnällä saman tagin sisällä, esimerkiksi: <root-layout width="160"
height="120"/>. Sisäkkäiset
elementit on päätettävä oikeassa järjestyksessä, eli elementtien lopetustagit
eivät saa olla "ristissä". HTML-koodeissa joskus näkyvää merkintöjen
sekasotkua ei sallita, vaan koodin on oltava ns. hyvänmuotoista XML:n
vaatimusten mukaan.
SMIL on kantakielensä
tavoin kirjainherkkää, eli pienet ja isot kirjaimet ovat eri asioita. Kaikki
elementit kirjoitetaan aina pienillä merkeillä; isolla kirjoitetut elementtien
nimet eivät mene käännöksestä läpi. Elementtien ominaisuudet eli attribuutit
kirjoitetaan lainausmerkkien väliin.
Esimerkki
Yksinkertainen SMIL
-esimerkki:
<smil>
<head>
<meta name="title" content="kulkurin
kuvia" />
<meta name="author" content="Asko
Laurila" />
<layout>
<root-layout width="160"
height="120"/>
<region id="Image" width="100%"
height="80" left="0"
top="0" />
<region id="Text" width="100%"
height="40" left="0"
top="80" />
</layout>
</head>
<body>
<par dur="8s">
<img src="EkaKuva.jpg"
region="Image" />
<text
src="EkaTeksti.txt" region="Text" />
<!-- Jos esimerkissä olisi äänitiedosto,
se
merkittäisiin seuraavasti:
<audio src="EkaSoundi.amr"/>
-->
</par>
<par dur="7s">
<img src="TokaKuva.jpg"
region="Image" />
<text src="TokaTeksti.txt"
region="Text" />
<!--
<audio src="TokaSoundi.amr" />
-->
</par>
</body>
</smil>
Kuten näemme, SMIL
-merkintätapa on varsin lähellä HTML:n merkintätapaa. Visuaalisesti eli
rakenteeltaan ja syntaksiltaan SMIL-koodi muistuttaa HTML:ää. Koko viestin
runko on sisällytetty <smil></smil> -tagien sisään ja itse viestillä (tai dokumentilla) on sekä
head että body -osat.
Head -osan sisältämä informaatio koskee koko viestiä. Title-
ja author meta-kentät vastaavat sähköpostin From-
ja Subject -kenttiä. Nämä meta -kentät eivät ole pakollisia.
Vastaanottavan päätelaitteen täytyy pystyä käsittelemään viestejä, jotka
sisältävät meta -kenttiä, mutta ei välttämättä tarvitse kyetä lukemaan tai
jakamaan meta -kenttien informaatiota.
Jokaiselle ruudulla
näkyvälle mediaelementille on varattava tila esitysalueelta. Tilan varaaminen
tehdään layout -lohkon sisällä.
Lohkon head
sisällä oleva layout -osa määrittää perus-layoutin koko viestin kaikille
"kalvoille". Ylläoleva esimerkki on päätelaitteelle, jonka näyttö
esittää sisällön yleensä pystykuvana, missä pystysuuntainen mitta on suurempi
kuin vaakasuuntainen. Tässä alkaa näkyä ero MMS:n SMILin ja PC-ympäristössä
käytettävän SMILin välillä. Pöytäkoneen näytöllä SMIL -kalvot näytettäisiin
täsmälleen 160 pikseliä leveinä ja 120 pikseliä korkeina. Kokonaisesitysalue
jaettaisiin kahteen pienempään alueeseen.
Näytön image -alue on 80 pikseliä korkea ja sijoittuu aina 40 pikseliä
korkean text -alueen
yläpuolelle. MMS -puhelimen selaimessa näyttöalue voi jäädä pienemmäksi kuin
layout vaatisi. Näytön mittasuhteet soveltuisivat paremmin toisenlaisen
layoutin näyttämiseen. MMS:n SMIL-määritysten mukaan selain voi vapaasti
uudelleenmuovata layoutia siten, että se soveltuu parhaalla mahdollisella
tavalla laitteen näytölle. Tästä syystä MMS:n ensimmäinen määritys sallii vain
yhden kuva-alueen ja yhden tekstialueen yhdelle näytölle kerrallaan.
Päätelaite voi
valita, korvaako se esityksen mukana tulevan layout -informaation
omalla kiinteällä layoutillaan. Tämä ei silti tarkoita sitä, että MMS-viestin
määrityksessä ei tarvittaisi layout -lohkoa. Se täytyy sisältyä koodiin sellaisia päätelaitteita
varten, jotka pystyvät joustavasti toistamaan määritetyn layoutin. Näin MMS
-viestit ovat helpommin toistettavissa laajalla laitekirjolla, ja koodi on ns.
siirrettävää.
Esityksen varsinainen
sisältö on koodin body -osan sisällä. Mediatiedostot voidaan määritellä toistumaan
peräkkäin seq -komennolla tai samanaikaisesti par
-komennolla. Tahdistuskomentoja voidaan latoa myös sisäkkäin, jolloin niiden
avulla on mahdollista tahdistaa monenlaisia esitysmuotoja.
Ylläolevassa
esimerkissä käytetään par -tagia. Samanaikaisuus (parallel) määrää kaikki tagin sisällä
olevat elementit toistumaan yhtä aikaa. Tämä on ilmeistä MMS -viestissä, mutta
täysiverisessä SMIL-esityksessä par -tagi on vastapari seq (sequence) -tagille ja antaa enemmän mahdollisuuksia
monimuotoisten mediaelementtien käytölle. MMS:n SMIL-versiossa seq
-tagia vastaa itse asiassa body. Attribuutti dur (duration) kertoo kunkin näytön kestoajan esityksessä.
Päätelaite voi tässäkin valita - kuten layoutin toistossa - ohittaako se
attribuutin, mutta siitä huolimatta se on aina koodissa määriteltävä.
Ylläolevan esimerkin
kukin "kalvo" sisältää ainakin kaksi elementtiä: kuvan image -alueen ja tekstin text -alueen. Audio -elementti soitetaan, kun näyttö on esillä.
Normaalissa SMIL-esityksessä layout -alueiden nimet (kuva ja teksti esimerkin
MMS -viestissä) voivat olla käytännöllisen yleisluonteisia lohkoille, jotka
voivat sisältää minkä tyyppistä sisältöä tahansa. MMS:n SMIL-esityksessä
kuitenkin image -alueella täytyy olla kuvaelementti ja text -alueella
tekstiä sisältävä elementti.
Ylläoleva esimerkki
sisältää suurimman osan tageista, joita on turvallista käyttää MMS -viesteissä
ensimmäisen sukupolven MMS -toteutuksissa. Seuraavassa on kattavampi kooste
suositelluista SMIL -tageista MMS-käyttöön. Mukana on kunkin tagin sallitut attribuutit
ja lapsitagit.
<smil></smil>
Määrittävät SMIL
-merkkauskielen; viestin koko data on oltava näiden tagien sisällä.
Attribuutit: ei ole.
Lapset: head, body
<head></head>
Näiden tagien sisällä
oleva data koskee koko viestiä.
Attribuutit: ei ole.
Lapset: meta, layout
<body></body>
Nämä tagit sisältävät
koko viestin rungon, johon sisältyvät varsinaiset esityksen näytöt.
Attribuutit: ei ole.
Lapset: par
<meta
/>
Meta-tagit sisältävät
viestiin liittyvää informaatiota; sijoitetaan koodin head
-lohkoon.
Attribuutit: name meta-informaation nimi
content varsinainen meta-informaatio
Lapset: ei ole
<layout></layout>
Määrittää viestin
kaikkien näyttöjen perus-layoutin.
Attribuutit: ei ole.
Lapset: region
<root-layout />
Määrittää koko
alueen, jonka viestin pitäisi täyttää. Taattu maksimi leveys-korkeus -suhteelle
on160 x 120 pikseliä.
Attribuutit: width koko esitysalueen leveys
height koko esitysalueen korkeus
Lapset: ei ole
<region
/>
Määrittää alueen
yksittäisen näytön sisällä. Toistaiseksi on vain kaksi luvallista aluetta: yksi
kuvalle ja yksi tekstille.
Attribuutit: id alueen
nimi
top alueen yläreuna pikseleissä näytön vasemmasta yläkulmasta
left alueen vasen reuna pikseleissä näytön vasemmasta yläkulmasta
width alueen leveys pikseleissä
height alueen korkeus pikseleissä
fit määrittää tavan, millä alueen sisältöä pitäisi muuttaa,
ellei sisältö mahdu määritellylle alueelle laitteen näytöllä. Hyväksyttävät
arvot fit -attribuutille on listattu alla. Kaikkien arvojen
lähtöpisteenä objektien piirrolle on aina alueen vasen yläkulma. Yleensä fit -attribuutin
käyttöä MMS -viesteissä ei suositella.
-
fill: skaalaa leveyden ja korkeuden
itsenäisesti alueen sallitun tilan mukaan
-
hidden: leikkaa ala- ja/tai
oikeaa reunaa jos objekti on suurempi kuin alue, tai täyttää taustaa jos
objekti on pienempi kuin alue
-
meet: skaalaa objektin ylös säilyttäen
sen mittasuhteet, kunnes sen korkeus tai leveys sopivat alueen korkeuteen tai
leveyteen
-
slice: skaalaa objektin
alas säilyttäen sen mittasuhteet, kunnes sen korkeus tai leveys sopivat alueen
korkeuteen tai leveyteen.
Lapset: ei ole
<par></par>
Määrittää viestin
yksittäisen näytön.
Attribuutit: begin näytön absoluuttinen alkamisaika
end näytön absoluuttinen loppumisaika
dur näytön kestoaika
Lapset: img, text, audio, ref
<img />
Määrittää, mikä kuva
esitetään näytön ainoana kuvana.
Attribuutit: src kuvatiedoston lähde, pakollinen, täytyy olla kelvollinen
kuvamuoto
region pitää olla "image" -alueen
ensimmäisenä määrityksenä
alt vaihtoehtoinen teksti kuvalle
Lapset: ei ole
<text
/>
Määrittää tekstin,
joka näytetään tämän näytön tekstialueella.
Attribuutit: src tekstitiedoston
lähde, pakollinen, täytyy olla kelvollinen tekstimuoto
region pitää olla "text" alueen
ensimmäisenä määrityksenä
alt vaihtoehtoinen teksti (jokseenkin vastaava kuin text -alue)
Lapset: ei ole
<audio
/>
Määrittää kullakin
näytöllä soitettavan audiotiedoston.
Attribuutit: src äänitiedoston
lähde, pakollinen, täytyy olla kelvollinen audiomuoto
alt vaihtoehtoinen teksti audiolle
Lapset: ei ole
<ref />
Tagi yleiselle
mediaobjektille. Normaalissa SMIL -esityksessä voidaan käyttää img, audio, text, jne -tagien sijasta. MMS -viesteissä ref -tagin
käyttöä ei suositella.
Attribuutit: src objektin
lähde
alt vaihtoehtoinen teksti objektille
Lapset: ei ole
Forum Nokian sivuilta
löytyy useita nimenomaan mobiilikäyttöön soveltuvia oppaita hakusanalla SMIL: http://www.forum.nokia.com/
W3C:n perusteellinen,
muttei helppotajuinen SMIL-määritys: http://www.w3.org/TR/REC-smil/
Microsoftin Timed Interactive Multimedia Extensions –sivut:
http://msdn2.microsoft.com/en-us/library/ms533099.aspx
ja vähän
kehittyneempään web-sivujen maustamiseen:
http://msdn2.microsoft.com/en-us/library/ms976099.aspx
Virtaustoistoon ja
SMIL-kieleen liittyviä käytännön vinkkejä: http://smw.internet.com/smil/tutor/
Soneran
verkkomultimediaan erikoistuneet sivut: http://www.live.sonera.com/live/index.html