5. SMIL

 

SMIL

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.

 

5.1 KOODIN RAKENNE

 

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" />

Ekakuva

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

 

5.2 TAGIT

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

 

 

5.3 LINKKEJÄ

 

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

 

<<< Alkuun | etusivu | sisällys | työkaluohjelmat | wml | xhtml | midletit


Sivun alkuun