SMIL este un limbaj pentru
prezentari multimedia sincronizate pe Web.
Pentru a crea prezentari multimedia pe
Web, similare celor de la TV, Consortiul WWW a elaborat recent (în
a doua jumatate a anului 1998) un limbaj de specificare nou, descendent
din XML 1.0 (eXtended Markup Language, redutabil complement al binecunoscutului
HTML), intitulat SMIL (Synchronized Multimedia Integration Language).
SMIL ofera urmatoarele facilitati:
-descrierea comportamentului temporal al unei prezentari multimedia
incluzând elemente text, audio, video, animatii;
-descrierea facila a aranjarii elementelor prezentarii în cadrul
ecranului;
-asocierea de hiper-legaturi obiectelor multimedia în întregul
lor sau partilor componente.
SMIL este asemanator cu HTML, beneficiind
de flexibilitatea limbajului XML (posibilitati de extindere), si împrumuta
trasaturi ale foilor de stiluri specificate de CSS2 (Cascading Style
Sheets level 2).
Structura unui document SMIL:
Asa cum este de asteptat, un document
SMIL este bazat pe marcatori delimitati între < si >:
Elementul <head> contine
informatii independente de modul de desfasurare a prezentarii (sau prezentarilor)
multimedia si defineste aranjamentul în pagina Web a acesteia
(eventual folosind alternative de afisare a obiectelor multimedia).
Prin intermediul marcatorului <layout>
se pot specifica pozitionari ale elementelor din corpul unui document
SMIL, aceste pozitionari putând fi alese eventual dintr-un set
de aranjamente (definite în diferite limbaje specifice: SMIL,
CSS sau DSSSL).
Iata un exemplu care ilustreaza modul
cum CSS2 poate fi utilizat ca o alternativa la aranjamentul de baza
din SMIL:
În doua zone de pe ecran vor fi
afisate doua resurse: un film încarcat de pe un server aflat la
distanta (care va dura 2 minute si va fi repetat de doua ori) si un
film luat de pe serverul local (cu o durata de 30 de secunde).
Tag-ul <layout> poate contine definitii ale mai multor regiuni
de ecran (prin <region>) sau a unui aranjament general, utilizat
de toate celelalte elemente (folosind <root-layout>).
O regiune de document poate avea fixat
un fundal (cu atributul background-color), o zona de ecran, în
pixeli (atributele top, left, height, width), un identificator unic
(atributul obligatoriu id), o maniera de încadrare a obiectului
multimedia pe care îl va contine: scalare, decupare, scrolling
(atributul fit).
Corpul unui document SMIL:
Corpul specificat de marcatorul <body>
poate avea ca sub-marcaje: <a> si <anchor> (definesc ancore,
similare celor din HTML), <ref>, <animation>, <audio>,
<img>, <video>, <text>, <textstream>
(specifice obiectelor multimedia incluse în document), <seq>
si <par> (elemente de sincronizare).
Sincronizarea obiectelor multimedia:
Exact ca în limbajele de programare
paralela, exista doua tag-uri pentru rularea în maniera secventiala
sau paralela a prezentarilor multimedia.
Sub-marcatorii lui <par> se pot suprapune în timp, dar ordinea
textuala a aparitiei lor nu are nici o influenta asupra modului de sincronizare
a prezentarii.
Un exemplu:
Acuratetea sincronizarii dintre copiii
(sub-marcatori definind obiecte multimedia) unui grup paralel este dependenta
de implementare (cazul unor medii continue - flux audio sau video -
prezentate în paralel).
Un navigator multimedia poate prezenta
urmatoarele comportamente:
-sincronizare hard (programul de prezentare multimedia sincronizeaza
copiii dintr-un <par> prin intermediul unui ceas
comun);
-sincronizare soft (fiecare copil al tag-ului <par> are propriul
lui ceas, care ruleaza independent de ceasurile altor copii prezenti
în acelasi tag <par>).
Intervalul de timp poate fi specificat
astfel: 03:40:10 (3 ore, 40 de minute si 10 secunde), 01:33 (o ora si
33 de minute), 15min, 39s, 5ms, 0.05s etc.
Pornirea, oprirea sau evolutia unei prezentari
pot fi influentate de un eveniment ca begin, end sau valoare de timp.
Astfel, putem specifica urmatoarele:
Filmul interviului va începe cu
15 secunde mai târziu decât sonorul.
Pentru prezentari secventiale se utilizeaza
tag-ul <seq>.
Pot fi folosite pentru ambele tag-uri
<par> si <seq> atribute ca:
-begin - timpul începerii explicite a unui element,
-dur - durata unei prezentari sau a unui obiect multimedia,
-endsync - sfârsit sincronizat,
-end - sfârsitul explicit al unui element,
-region - regiunea unde se va derula prezentarea acustica sau vizuala
a unui obiect,
-repeat - modul de repetare a continutului unei prezentari.
Aceste atribute se pot regasi si în
cadrul tag-urilor de specificare a fiecarei resurse multimedia incluse
în documentul SMIL.
Desigur, tag-urile <seq>
si <par> pot fi imbricate, conducând la prezentari
multimedia cu sincronizari complexe.
Modelul sincronizarii:
Pentru fiecare element implicat în
sincronizare se definesc niste valori de timp de început, sfârsit
si durata a rularii unui obiect multimedia:
1. fiecare element în SMIL poseda un timp de început implicit
(implicit begin).
2. fiecare element poate avea asignat un timp de început explicit
(explicit begin) prin atributul begin. Se considera eroare daca timpul
de început explicit este mai mic decât cel implicit.
3. fiecare element are, de asemenea, un timp de sfârsit implicit
(implicit end).
4. fiecare element poate, prin intermediul atributului end, sa aiba
asociat un timp de sfârsit explicit (explicit end).
5. durata implicita de rulare este diferenta dintre timpii de sfârsit
implicit si de început implicit.
6. fiecare element în SMIL poate avea atribuita o durata explicita
prin intermediul atributului dur.
7. timpul de început dorit (desired begin) al unui element este
egal fie cu timpul de început explicit (daca a fost specificat),
fie cu timpul de început implicit. La fel stau lucrurile si pentru
timpul de sfârsit dorit (desired end).
8. durata dorita a unui element este diferenta dintre timpul de sfârsit
dorit si timpul de început dorit.
9. fiecare element are un timp de început efectiv si un timp de
sfârsit efectiv (sfârsitul efectiv al unui copil nu poate
surveni mai târziu decât sfârsitul efectiv al parintelui
sau).
10. durata efectiva este calculata facând diferenta dintre timpul
de sfârsit efectiv si cel de început efectiv.
În specificatia SMIL se prezinta
in extenso cum sunt calculati toti acesti timpi.
Alternative de prezentare:
Tag-ul <switch> da
posibilitatea autorului unei prezentari sa specifice un set de resurse
alternative dintre care doar una va fi aleasa. Exista o serie de atribute
de test care, daca sunt evaluate ca ?adevarat', atunci resursa multimedia
va fi încarcata, decodificata si rulata.
Ca atribute de test se pot mentiona:
-system-bitrate - specifica largimea de banda (în biti pe secunda),
depinzând de conexiunea folosita. Astfel, daca o resursa (de exemplu,
un video-clip) nu poate fi transferata suficient de repede, ea nu va
mai fi încarcata (sau se poate furniza o locatie alternativa);
-system-captions - permite autorilor multimedia sa faca distinctia dintre
textul redundant echivalent unei portiuni audio a unei prezentari (de
pilda un discurs) - text destinat celor cu disfunctionalitati auditive
sau celor care învata sa citeasca - si textul destinat întregii
audiente;
-system-language - va fi evaluat ca adevarat daca una dintre limbile
indicate de utilizator se regaseste printre cele din lista de valori
ale acestui parametru. Astfel, se poate renunta la încarcarea
unui speech daca el nu este rostit în limba româna: <audio src="cuvintare.rm" system-language="ro"
/>
-system-overdub-or-caption - se utilizeaza pentru a recunoaste daca
o resursa (audio sau video) se doreste a fi titrata sau dublata (o media
se poate înlocui cu alta);
-system-screen-size - se evalueaza ca adevarat daca sistemul gazda suporta
rezolutia specificata de acest atribut. În acest mod se pot concepe
pagini independente de rezolutie, pentru fiecare rezolutie în
parte putând fi oferita o alta prezentare;
-system-screen-depth - adâncimea paletei de culori în biti
(valori tipice: 1, 8, 24 etc.). Se pot avea în vedere caracteristicile
color ale calculatoarelor gazda pe care se ruleaza prezentarea (daca
nu se pot suporta destule culori, nu mai are rost sa se încarce
o imagine JPG cu 1 milion de culori, ci doar un GIF cu 256 de culori).
Exemple:
Pe fundalul muzicii se va proiecta si
video-clipul însotit de fotografia compozitorului, numai daca
rezolutia va permite acest lucru.
Hiper-legaturi
O prezentare a unui document SMIL poate
implica alte aplicatii sau extensii (non-SMIL), datorita naturii sale
de integrare a unor resurse eterogene. De exemplu, un navigator SMIL
poate vizualiza o pagina HTML încorporata în documentul
SMIL sau, invers, un agent HTML poate utiliza o extensie (plug-in) SMIL
pentru a naviga printr-un document SMIL.
Legaturile se adreseaza prin intermediul
URL-urilor, exact ca si în HTML.
Elementul <a> este foarte asemanator cu <a> din HTML 4.0,
dar în SMIL este adaugat un atribut show care controleaza comportamentul
temporal al sursei când se selecteaza legatura pe care o defineste.
Din considerente de sincronizare, <a> nu influenteaza sincronizarea
subtag-urilor sale. Un marcaj <a> nu poate fi imbricat în
alt <a>.
Atributul show poate avea urmatoarele
valori:
-replace - prezentarea curenta este oprita si este înlocuita de
resursa destinatie a legaturii definite de <a>. Daca navigatorul
are implementat un mecanism de istoric, prezentarea sursa va fi pornita
din nou atunci când utilizatorul se reîntoarce la ea;
-new - prezentarea resursei destinatie începe într-un nou
context, fara a afecta prezentarea curenta (ambele se desfasoara independent);
-pause - prezentarea curenta este oprita si prezentarea destinatie (nou
încarcata) este începuta într-un nou context. La terminarea
acesteia din urma, prezentarea initiala îsi va continua rularea.
Un exemplu: Prezentarea A
În acest exemplu, observam ca prezentarea
A are o legatura în mijlocul prezentarii B. Daca legatura este
urmata de catre navigator, atunci prezentarea va debuta de la timpul
de început efectiv al elementului cu identificatorul next (în
acest caz, un video-clip).
Functionalitatea lui <a> este limitata
la asocierea unei legaturi catre un obiect multimedia în întregul
lui. Tag-ul <anchor> ofera în plus:
-asocierea unei legaturi la o sub-parte temporala sau spatiala a unui
obiect multimedia, prin atributul href;
-crearea unei sub-parti a unui obiect multimedia utilizând atributul
id;
-împartirea în sub-parti spatiale a unui obiect, prin atributul
coords;
-divizarea în cuante de timp a unui obiect, folosind atributele
begin si end (valorile acestora sunt relative la începutul obiectului
respectiv)
Iata un exemplu în care durata unui
film este împartita în doua sub-intervale de timp, câte
o legatura diferita fiind asociata fiecarui sub-interval:
Utilizând aceasta facilitate, pot
fi create imagini senzitive (ca hartile de coordonate din HTML) si legaturi
temporale (dinamice).
Obiecte multimedia:
Obiectele multimedia constituie actorii
unei prezentari multimedia, fiind incluse prin referinte folosindu-se
URL-uri. Mai general, sunt utilizate URI-uri (Uniform Resource Identifiers).
Exista doua tipuri de obiecte:
-cu durata intrinseca (video, audio), numite obiecte multimedia continue
-fara durata intrinseca (text, imagine) - obiecte multimedia discrete.
Autorii unei prezentari multimedia pot
încadra fiecare obiect într-una din categoriile: animatie,
audio, imagine, video, text sau flux text, specificate de tag-urile
<animation>, <audio>, <img>, <video>, <text>,
<textstream> respectiv. Când
sunt în dubiu, autorii pot folosi <ref>, tag generic desemnând
orice element multimedia (lasa deschideri pentru alte tipuri de media,
de exemplu lumi virtuale 3D).
Fiecare tag multimedia poate avea si urmatoarele
atribute:
-alt - descrierea alternativa a unui obiect, vizibila în cazul
în care agentii utilizator nu-l pot afisa;
-author - autorul respectivului obiect multimedia;
-copyright - specifica drepturile de autor;
-type - tipul obiectului (valori MIME. De exemplu: image/jpeg; text/plain);
title - titlul asociat fiecarui obiect multimedia.
Implementari:
Cu toate ca SMIL este un limbaj de specificare
foarte tânar si în continua dezvoltare, deja exista implementate
unelte de creare a documentelor SMIL: CWI Grins, TAG Editor 2.0, VEON,
plus agenti utilizator (navigatoare): CGI Grins, Helio Barbizon, HPAS,
Real Networks G2, Productivity, Works Lp player. Validarea unui document
SMIL se poate realiza cu Validator.
Utilizare:
SMIL ar putea fi solutia pentru prezentari
multimedia sofisticate si chiar pentru a realiza corespondentul Web
al unor emisiuni TV, prin mecanismul de sincronizare si integrare unitara
a resurselor multimedia distribuite. SMIL ofera premisele televiziunii
la cerere (TV on demand) sau TV web-ului.
Autorii documentelor SMIL îsi pot
scrie prezentarile tinând cont de resursele fizice de care dispun
utilizatorii (largime de banda, rezolutie, posibilitati color), de preferintele
lor lingvistice sau anumite handicapuri, oferind astfel alternative
pentru fiecare categorie în parte.
Cred ca în curând va fi inclus
în limbaj si suportul pentru realitatea virtuala (conectivitate
cu VRML) si o interactivitate mai larga cu utilizatorul (via Java, probabil).