PREZENTARE JAVA MEDIA FRAMEWORK
1/13426
calendar_month 26 Ian 2007, 00:00
Java Media Framework (JMF) este un API (application programming interface) pentru Java, care este folosit pentru prezentarile multimedia real-time si procesarea acestora. Java Media Framework lucreaza cu date media care se schimba in timp, de exemplu o sursa video de la un televizor, o sursa audio de la o transmisie audio sau animatii.

Java Media Framework ofera posibilitatea de adaugare a datelor media audio si video in aplicatiile construite pe tehnologie Java. Acest package optional extinde Java 2 Platform, Standard Edition (J2SE) pentru dezvoltatorii multimedia si poate reda, captura, transmite si transcoda formate media multiple.

JMF 1.0 API (Java Media Player API) ofera programatorilor posibilitatea de a dezvolta programe Java pentru redarea informatiei media time-based. JMF 1.0 API a fost dezvoltata de Sun Microsystems, Inc., Silicon Graphics Inc., si Intel Corporation.

JMF 2.0 API este a doua versiune a JMF API si extinde framework-ul oferind suport pentru capturare si stocare a datelor media, controlul procesarii in timpul redarii si diverse procesari asupra stream-ului media. In plus, JMF 2.0 defineste un plug-in API care ofera dezvoltatorilor avansati posibilitatea de a customiza si a extinde functionalitatile JMF.Ultima varianta disponibila este JMF 2.1.1e. JMF 2.0 API a fost dezvoltata de Sun Microsystems, Inc., si IBM.

JMF 2.0 a fost proiectat pentru:

· Usurinta in programare

· Suport pentru capturarea datelor media

· Permite dezvoltarea aplicatiilor de straming media si conferinte in Java

· Permite dezvoltatorilor avansati si producatorilor de tehnologii sa implementeze solutii proprii bazate pe API-ul existent si sa integreze usor noi imbunatatiri la structurile deja existente.

· Permite dezvoltarea demultiplexoarelor proprii si download-abile, a codec-urilor, a multiplexoarelor si a procesoarelor de efecte.

· Mentine compatibilitatea cu JMF 1.0

Arhitectura Java Media Framework

Arhitectura JMF este organizata pe trei nivele: Nivelul de Intrare, Nivelul de Procesare, Nivelul de Iesire.

· Nivelul de Intrare este format din: device-uri de captura, fisiere de pe disk si intrare de pe retea.

· Nivelul de Procesare contine: codec-uri si efecte.

· Nivelul de Iesire poate fi: salvare pe disk, trimitere pe retea, transmisie video.

La nivelului de intrare, datele sunt citite de la o sursa si sunt trecute in buffer-e pentru parte de procesare. Acest nivel ar putea constitui si citirea de la un device local de captura (de exemplu o camera web sau o placa de captura TV), un fisier de pe disk sau transmisie de pe retea.

Nivelul de procesare consta intr-un numar de codec-uri si efecte folosite pentru a modifica stream-ul de date intr-unul potrivit pentru iesire. Aceste codec-uri pot realize functii de tipul: compresiei sau decompresiei pentru un audio intr-un format diferit, inlaturarea zgomotelor sau aplicarea unui efect (de exemplu adaugarea ecoului).

Dupa ce nivelul de procesare a aplicat toate transformarile stream-ului, transmite informatia nivelului de iesire. Nivelul de iesire poate lua stream-ul sa il transmita unui fisier de pe disk, il poate afisa pe diplay-ul video local sau il poate transmite pe o retea.

Java Media Framework este construita dupa arhitectura componentelor. Componentele sunt organizate intr-un numar de categorii principale:



· Handler media

· Handler de surse de date

· Codec-uri/Efecte

· Redenrer

· Multiplexoare/Demultiplexoare

Handler-ele media sunt inregistrate pentru fiecare tip de fisier cu care JMF trebuie sa se lucreze. Pentru a suporta un nou format de fisier, trebuie creeat un nou driver media (MediaHandler).

Un handler de surse de date se ocupa cu stream-urile sursa de la intrari diferite. Acestea pot fi pentru protocoale de retea, cum ar fi http sau ftp, sau pentru simpla intrare de pe disk.

Codecurile si efectele sunt componente care iau un stream de intrare, ii aplica o transformare si il scoate. Codec-urile pot avea intrari si iesiri diferite, in timp ce efectele sunt simple transformari ale unei singure intrari pentru o iesire de acelasi format. Un codec realizeaza compresia si decompresia datelor media. Atunci când un track este encoded, este convertit intr-un format compresat pentru stocare sau transmisie; atunci când este de-codat, este transformat intr-un format potrivit prezentarii. Un filtru de efecte modifica datele pentru a crea efecte speciale, cum ar fi blur sau ecou. Acestea filtre de efect sunt clasificate in efcte pre-procesare si post-procesare, in functie de momentul in care sunt aplicate, inainte sau dupa ce codec-ul proceseaza datele. De obicei, filtrele de efect se aplica asupra datelor necompresate.

Un rederer este asemanator cu un codec, dar iesirea finala nu este tot un stream. Un renderer video afiseaza data finala pe ecran, dar un alt tip de renderer ar putea sa scoata datele pentru un hardware diferit, de exemplu o placa TV externa.

Un demultiplexor extrage un track intr-un stream media multiplexat. Un multiplexor ia track-uri individuale si le uneste intr-un singur stream . Sunt folositoare pentru a crea si a citi un pachet audio si video pentru a-l salva pe disk intr-un singur fisier, sau sa fie transmis pe retea.

Arhitectura JMF poate fi mai usor de inteles folosind o comparatie cu un sistem stereo. Un CD ofera muzica sistemului. Aceasta muzica este formata din date capturate folosind microfoane si alte dispozitive din studioul de inregistrare. Microfonul serveste ca un dispozitiv de captura audio. CD-ul este o sursa de date pentru sistemul stereo. CD playerul scoate semnalul sonor la speaker – dispozitivul de iesire. JMF foloseste acelasi model.