Cap 6. Limbajul SMIL.
Synchronized Multimedia Integration Language (SMIL)
a fost creat in ideea de a reprezenta pentru multimedia ceea ce HTML reprezinta
pentru hypertext. El se bazeaza pe XML si
pemite crearea de prezentari distribuite care sa integreze si
sincronizeze elemente multimedia avand cele mai diferite
formate. Incepand cu versiunea 2.0 SMIL a
fost definit ca un meta-limbaj cu ajutorul notiunilor de modularizare si
profilare. Din el pot fi derivate diverse limbaje ca subseturi ale standardului
SMIL. Versiunea actuala este SMIL 3.0 si specificatia sa completa se gaseste pe
paginile W3C SMIL 3.0. Ea este
sprijinita de diverse companii in domeniul dezvoltarii de media printre
care Macromedia, Adobe si RealNetworks. Microsoft s-a alaturat de
asemenea acestui standard contribuind prin tehnologia proprie (HTML+TIME)
si prin suportul in Internet Explorer.
6.1. Structura unui document
SMIL
Un document SMIL este
similar ca si structura cu un document HTML. Ca si acesta este compus din
o sectiune <head> care va cuprinde formatarea generala si
meta-informatiile si o sectiune <body> care va contine
prezentarea cu informatiile de sincronizare si interactivitate. Sectiunea
<body> cuprinde in general o combinatie de entitati definite prin
trei taguri structurale (<seq>, <par> si
<excl>). Prin tagul <seq> se pot defini playlist-uri
simple, secventiale; prin <par> zone si straturi multiple de
redare in paralel; iar prin <excl> eventimente exclusive
declansate prin intreruperi.
SMIL utilizeaza adrese URL
pentru a desemna obiecte media, permitand reutilizarea acestor obiecte si
pastrearea lor in mod distribuit pe diverse servere. Pentru transferuri se poate
preciza si largimea de banda asociata acestora.
Structura de baza a unui
document SMIL se aseamana cu cea a unei pagini HTML:
<smil>
<head>
<meta> informatii
</meta>
<layout>
<!-- pozitionare
si afisare -->
</layout>
</head>
<body>
<!-- componente multimedia si
sincronizare -->
</body>
</smil>
Sectiunea <layout> permite crearea "scenei" pe care vor
evolua entitatile multimedia din
prezentare.
Entitatile (componentele) multimedia din sectiunea <body>
sunt definite prin adrese URL, li se atribuie un nume (handler) si pot avea
diverse formate: imagini, animatii, streamuri video, clipuri audio sau video,
fisiere text, fisiere flash si alte formate pentru care exista instalate playere
specifice.
Metainformatii SMIL
Metainformatiile din sectiunea
<meta> reprezinta atribute ale documentului. Cele mai folosite
atribute sunt: “abstract”, “author”, “base”, “copyright” and “title”.
Ex:
<meta name="title" content="My SMIL
Presentation"/>
6.2 Modulul SMIL
Layout
Elementele acestui modul se folosesc in sectiunea
<head> si sunt folosite pentru a defini si denumi ferestre si regiuni unde
vor fi afisate elementele media. In lipsa acetor indicatii, playerul de SMIL va
hotara singur unde sa plaseze elementele de media din pagina. Principalele
elemente ale acestui modul sunt:
- <root-layout>
Permite dimensiunea initiala a ferestrei prezentarii. Ex:
<root-layout backgroundColor="blue"
width="300"
height="250"/>
- <top-layout>
Permite definirea de ferestre multiple la o prezentare ca si
alternativa la root-layout care permite o singura fereastra. Nu afecteaza
sincronizarea. Ex:
<top-layout width="200"
height="90"/>
Momentul in care
fereastra este afisata se poate controla prin atributul open (onStart sau
whenActive), respectiv prin close (onRequest sau whenNotActive).
-
<region> Permite stabilirea pozitiei, dimensiunii si
scalarii elemnentelor media din prezentare. Ex:
<region id="fixed1" width="320" height="240" />
<region id="relative1" width="50%" height="50%"
/>
Regiunile pot contine alte regiuni
imbricate:
<region id="container1" width="200"
height="200">
<region id="in1" width="40%"
hieght="40%" />
</region>
Pentru
controlul dimensiunii afisarii elementului in regiune sunt posibile urmatoarele
optiuni:
>hidden - dimensiunea originala cu decupare daca este
cazul(implicit)
>fill - redimensioneaza la dimensiunea ferestrei
(va produce distorsiuni)
>meet - redimensioneaza dar pastreaza
proportiile astfel incat sa incapa optim
>slice - redimensioneaza
astfel incat cea mai mica dimensiune sa ajunga sa umple
regiunea
>scroll - dimensiune normala dar cu posibilitate de
scroll (nu toate playerele implementeaza corect)
Nivelul sunetului legat de
media dintr-o regiune se poate stabili prin atributul soundLevel.
Acest atribut poate fi utilizat si legat direct de
element. Ex:
<region
id="sunet"
soundLevel="200%" ... />
Ordinea de afisare a obiectelor
la suprapunerea regiunilor se poate stabili prin atributul numeri z-index.
Valoarea 1 este cel mai ascus nivel.
- <regPoint> Este
folosit pentru a defini puncte de referinta in interiorul unei regiuni oarecare.
Ex:
<regPoint id="coltStanga" top="10"
left="10"/>
In plus se poate specifica si
punctul la care se face alinierea prin atributul regAlign (ex. center, topLeft,
bottomMid etc.). In plus se poate utiliza atributul predefinit regPoint="center"
pentru a specifica direct in cadrul elementului modalitatea de
aranjare.
6.3. Modulul SMIL Timing and
Synchronization
Acest modul
premite orchestrarea prezentarii prin stabilirea timpului de intrare si a
duratei de afisare a fiecarui element. Prin acesta se poate sincroniza diverse
elemente cum ar fi o secventa video cu un element audio.
Elementele de
sincronizare:
- <seq> Permite rularea secventiala a
unei liste de entitati media. Este un asa numit "time container", fii sai fiind
ordonati in ordinea aparitiilor in lista. Cel mai simplu exemplu este realizarea
unei prezentari de tip slide-show cuprinzand imagini.
-
<par> Permite rularea in paralel (in acelasi timp) a unor
entitati media. Un exemplu simplu este cel care ruleaza simultan o secventa
video cu o coloana sonora externa. La utilizarea lui <par> trebuie sa se
tina cont de largimea de banda.
-
<excl> Permite rularea exclusiva a unui elemet. Daca
rularea incepe in timpul rularii altui element, aceasta va fi automat oprita.
- <priorityClass> Permite controlul comportamentului
la selectarea diverselor entitati sau actiuni. Permite stoparea sau intreruperea
unui element in momentul in care alt element este ales. Se foloseste ca si fiu
al unui element <excl>. Pentru a intrerupe rularea primului element in
momentul selectarii celui de al doilea se poate folosi secventa:
<excl>
<priorityClass
peers="pause">
<video id="first"
src=
"primul.avi"
/>
<video id="second"
src=
"aldoilea.avi"/>
</priorityClass>
</excl>
Atributele acestor entitati
sunt:
- begin/end Permite specificarea momentului de
start/stop a unui element. Valoarea se poate exprima in mod absolut in secunde
(ex. 3s), ca si offset (+/-3s) sau relativ fata de un alt element
(begin="el1.begin+5s"). Momentul inceperii/incheierii se poate specifica si prin
referirea la o actiune ("el1.activateEvent+3s"). De asemenea pot fi utilizate si
mai multe evenimente care sa declanseze startul, de ex. "3s; el1.activateEvent".
Intrarea poate fi specificata si prin accesskey(tasta).
-
dur Permite stabilirea duratei de rulare a unui element. Poate
fi exprimata in secunde sau poate lua valoarea "indefinite".
-
min/max Permite specificarea duratei minime/maxime de rulare a
unui element. Are prioritate fata de evenimentele generate de utilizator. Pentru
elemente care au o durata proprie (ex. clipuri audio sau video) se poate
utiliza valoarea "media" pentru a specifica aceasta durata.
- endsync
Permite terminarea fortata a unui grup functie de incheierea rularii
elementelor care il compun. Valori posibile: first, last, all sau id(el).
-
repeatCount Permite reluarea unui element sau grup de elemente
de un numar specificat de ori sau in mod continuu (indefinite).
-
repeatDur Permite reluarea unui element sau grup de elemente
astfel incat sa acopere o anumita durata. Valoarea "indefinite" specifica
repetarea continua.
- fill Permite sincronizarea mai
exacta intre obiectele unei prezentari. Valori posibile: remove, freeze, hold
(pana la incheierea parintelui), default (ca si parintele).
-
fillDefault La fel ca si fill dar se aplica unui intreg
grup.
- restart Utilizat in general pentru
elemente audio/video permite specificarea comportamentului in timpul rularii
acestora. Valori posibile: allways, whenNotActive, never,
default.
6.4. Modulul SMIL Media Objects
Limbajul SMIL nu permite crearea de elemente media.
Pentru realizarea unei aplicatii obiectele media trebuiesc referite
extern.
Tipuri de elemente media (tipul final este identificat din continutul
fisierului sau de tipul MIME transmis de catre
server):
<animation> Utilizat pentru animatii (ex. SVG
sau GIF animat).
<audio> Utilizat pentru secvente
audio (ex. mp3 sau rm).
<brush> Permite specificarea
unei culori, poate fi utilizat si pentru umplrea unei regiuni in locul unui
element.
<img> Utilizat pentru imagini digitale (ex.
gif, jpg, png).
<param> Utilizat pentru transmiterea
de parametrii pentru elemente complexe (ex. prezentari
flash).
<ref> Utilizat pentru un tip de media pe care
nu stim singur cum sa-l incadram.
<text> Utilizat
pentru definirea de text static. Poate proveni si dintr-un fisier text sau
HTML.
<textstream> Utilizat pentru text
dinamic.
<video> Utilizat pentru fisiere video (avi,
mpeg, rm).
Atribute specifice:
- alt Permite specificarea
unui text alternativ ce va fi afisat daca elementul respectiv nu este suportat
de catre player.
- clipBegin, clipEnd Permit specificarea
unei portiuni dintr-un clip care va fi redata de catre player.
-
color Permite specificarea unei culori pentru un element de tip
brush (nume culoare sau RGB in hexa).
- erase Permite
specificarea comportamentului dupa incheierea rularii clipului
(whenDone - obiectul este eliminat din scena,
never - obiectul este pastrat pe scena).
- src
Permite specificarea adresei unui obiect extern care va fi referit pentru a
fi inclus in prezentare.
- sensitivity Permite
specificarea modului in care obiectul interactioneaza cu utilizatorul (daca este
opaque va opri evenimentul utilizatorului iar daca este
transparent va lasa sa treaca evenimentul spre elementele de sub
el).
- title Permite specificarea titlului unui obiect. Cand
devine activ playerul va afisa acest titlu (nu exista insa un mod standard de
afisare).
6.5. Modulul SMIL Transition
Effects
Acest modul permite controlul modului in care se
face trecerile intre elementele unei prezentari. El contine doua
elemente:
<transition> Utilizat la definirea in
sectiunea head a fiecarui fel de tranzitie posibil
de folosit cu elemtele din sectiunea body. Un fel include un
anumit tip de tranzitie, de o anumita durata si avand diferiti parametrii
specifici prestabiliti.
<transitionFilter>
Utilizat daca se doreste specificarea unei tranzitii direct la un element.
Pentru aceasta va fi definit direct ca si copil a acelui element.
Atribute
specifice:
- begin, end Permit specificrea momentelor in
care incepe / se incheie o tranzitie. Observatia este ca tranzitia nu poate
influenta timpul total de afisare a obiectului (daca timpul de afisare se
incheie inaintea incheierii tranzitiei, obiectul va dispare de pe ecran
inainte de terminarea tranzitiei).
- direction Permite specificarea directiei
in care actioneaza tranzitia (forward sau reverse).
-
dur Permite specificarea duratei tranzitiei.
-
fadeColor Permite specificarea culorii de final a unei
tranzitii.
- from, to Permite specificarea portiunii de
tranzitie care ruleaza (intre 0.0 si 1.0).
- horzRepeat,
vertRepeat Permit duplicarea tranzitiei pe suprafata obiectului pe
orizontala si verticala (>=1).
- mode Permite
specificarea sensului tranzitiei (in sau out).
- type,
subtype Permite specificarea tipului si subtipului tranzitiei (fade,
slideWipe, barWipe, boxWipe, fourBoxWipe, barnDoorWipe, diagonalWipe,
bowTieWipe, veeWipe, barnVeeWipe, zigZagWipe, barnZigZagWipe, irisWipe,
triangleWipe, eyeWipe, starWipe, clockWipe, spiralWipe etc.) / (left, up,
right, down, horizontal, vertical, topLeft etc.).
6.6. Modulul SMIL
Animation
Modulul de animatii permite cresterea
expresivitatii unei prezentari SMILE. A fost introdus din versiunea SMILE
2.0.
Principalele elementele pachetului
sunt:
<animate> Implementeaza diverse tipuri de
animatii controlabile prin parametrii specifici.
<set>
Permite schimarea valorii unui parametru asociat unui element (ex. pozitia)
pentru o anumita perioada de timp.
<animateMotion>
Implementeaza deplasarea unui element dealungul unui drum liniar definit prin
punctul de destinatie.
<animateColor> Implementeaza
animarea culorii unui element pentru o anumita perioada de timp (ex. schimbarea
culorii unui text).
Atributele specifice sunt:
- attributeName
Permite specificarea atributului care va fi modificat de animatie (ex.
left, soundLevel, panZoom etc.).
- from, to Permite
specificarea punctului de unde incepe / se termina animatia.
-
by Permite specificarea unui deplasament relativ.
-
values Permite specificarea unei liste de valori pentru
animatia curenta. Continutul listei depinde de atributul (attributeName)
modificat de animatie.
- dur Permite specificarea duratei
animatiei.
- begin /end Permit specificarea inceputului /
sfarsitului unei animatii.