Conectare

Mi-am uitat parola

Panou De Control
Profilul tau
Informatii
Preferinte
Semnatura
Avatar
Social
Lista de prieteni si lista userilor ignorati
Membrii forumului
Grupuri de utilizatori
Mesaje private
Mesaje primite
Mesaje trimise
Subiecte monitorizate
Subiecte monitorizate
Parteneri
Steel Arena
Sondaj

Cum vi se pare siteul nostru?

81% 81% [ 13 ]
13% 13% [ 2 ]
0% 0% [ 0 ]
0% 0% [ 0 ]
6% 6% [ 1 ]

Total voturi : 16

Cuvinte-cheie


Programarea folosind Java Media Framework

In jos

Programarea folosind Java Media Framework

Mesaj Scris de +gZ.Flyking la data de Mier Iun 10, 2009 12:05 pm

O sursa de date incapsuleaza steam-ul media. In JMF, un obiect DataSource reprezinta media audio, video sau o imbinare a acestora. O sursa de date poate fi un fisier sau un stream ce vine de pe retea. Dupa ce se determina locatia sau protocolul, DataSource incapsuleaza atat locatia media, cat si protocolul si software-ul folosit pentru a livra media. Odata creata, o sursa de date poate fi oferita unui Player pentru a fi rulata, pentru Player fiind indiferent originile sursei de date.

Date media pot fi obtinute din surse variate, cum ar fi fisiere locale sau de pe retea, sau transmisii live de pe Internet. Astfel, o sursa de date poate fi clasificata dupa modul in care incepe transferul:

Sursa de date pull: clientul initializeaza transferul si controleaza transferul de la sursa. HTTP si FILE sunt exemple de protocoale pentru acest tip de date.
Sursa de date push: serverul initializeaza transferul datelor si controleaza modul in care sunt transferate datele. Exemple de surse de acest tip includ transmisie media si video la cerere.

Un dispozitiv de captura il reprezinta hardware-ul folosit pentru a captura datele, de exmplu microfon, camera web. Datele capturate de la dispozitiv pot fi furnizate unui Player pentru a fi redate, pot fi procesate pentru a converti datele in alt format sau pot fi stocate.Dispozitivele de captura pot fi categorisite in surse pull sau push. Cu o sursa pull, utilizatorul hotaraste cand sa captureze o imagine. In schimb un microfon se comporta ca o sursa push, deoarece ofera continuu stream de date audio.

Un player ia o intrare de stream audio sau video si o reda la un speaker sau la un ecran. Player-ul poate avea stari deoarece trebuie sa se pregatesca si sa-si pregatesca sursa de date ininte de a reda media. JMF defineste sase stari pentru un Player:

Nerealizat: in acest stadiu, obiectul Player a fost initializat. Aici Player-ul nu stie inca nimicdespre media.
In curs de realizare: Un Player se schimba de la stadiul de unrealized la realizing atunci cand este apelata metoda realize(). In acest stadiu, Playerul este in procesul de a-si determina cerintele resurselor.
Realizat: In acest stadiu Player-ul stie de ce resurse are nevoie si are informatii despre tipul de media pe care trebuie sa-l redea. Poate, de asemenea sa ofere componente vizuale si controale, si conexiunile sale cu restul obiectelor din sistem sunt realizate.
Prefetching: Atunci cand este apelata metoda prefech(), un Player se schimba din stadiul de realized in cel de prefetching. Aici Player-ul se pregateste sa prezinte media. In aceasta faza, isi incarca data media, obtine resursele exclusive
Prefetched: Acesta este stadiul in care Playerul este gata de start
Pornit: In acest stadiu intra cand se apeleaza metoda start(). Acum Playerul este gata sa rea data media.

Processor-ul este un tip de Player, dar spre deosebire de acesta, Processor-ulare controlul asupra procesarii din intrarea media. Pe langa redarea unei surse de date, Processor-ul poate sa scoata datele printr-o DataSource, astfel incat poate fi prezentat unui alt Player sau Processor. Pe langa cele sase stadii ale unui Player, un Processor include inca doua:

In curs de configurare: Un Processor intra in acest stadiu din stadiul unrealized, atunci cand este apelata metoda configure(). Se iese din acest stadiu atunci cand se conecteaza la sursa de date, demultiplexeaza streamul de intrare si acceseaza informatia despre formatul datelor de intrare
Configurat: Din stadiul de configurare, un Processor se schimba in stadiul de configured cand se conecteaza la sursa de date si formatul acesteia este determinat.

Un obiect Format reprezinta formatul exact al unui obiect media. Formatul nu poarta parametrii encoding specifici sau informatie global-timing; el descrie numele encoding al formatului si tipul de date necesar pentru format. Subclasele Format contin AudioFormat si VideoFormat.

Un Manager este un obiect intermediar care integreaza implementarile interfetelor care pot fi folosite. De exemplu, folosind Manager se poate crea un Player dintr-o DataSource. JMF ofera patru tipuri:

Manager: Se foloseste pentru a crea Player, Precessor, DataSource.
PackageManager: Acesta mentine un registru de package-uri ce contin clase JMF, cum ar fi custom Players, Processors, DataSources
CaptureDeviceManager: Acesta mentine un registru cu dispozitivele de captura
PlugInManager: Acest manager mentine un registru cu plug-in-urile JMF pentru componentele procesate

Cu JMF, una dintre cele mai importante probleme este crearea unui Player. Crearea acestuia se face apeland metoda createPlayer() a clasei Manager. Managerul foloseste URL-ul de la media sau MediaLocator specificat pentru a crea un Player corespunzator. Dupa obtinera acestuia, se pot obtine componentele vizuale, folosite pentru reprezentarea vizuala a informatiei media. Pentru a afisa componentele vizuale ale unui Player sunt necesari doi pasi:

Obtinerea unei componente vizuale apeland metoda getVisualComponent()
Adaugarea componentei vizuale la aplicatie

Un Player poate include si un panou de control cu butoane de start, stop si pause. Multe dintre metodele Player-ului pot fi apelate dupa ce acesta este in stadiul de realizat.Aceste metode ofera modalitati usoare de creare si realizare a unui Player intr-un singur pas. Atunci cand sunt apelate, se blocheaza pana cand Playerul este realizat. Urmatorul pas este apelarea metodei start(). Aceasta incearca sa schimbe starea Playerului in stadiul de started.

Captura datelor media este o alta problema importanta. Pentru a realiza o captura media sunt necesari pasii urmatori:

Localizarea dispozitivului de capturare folosit interogand CaptureDeviceManager
Obtinerea unui obiect CaptureDeviceInfo
Se obtine un MediaLocator din obiectul CaptureDeviceInfo si se foloseste pentru a creao DataSource
Crearea unui Player sau a unui Processor folosind DataSource
Pornirea Player-ului sau a Processor-ului pentru a incepe procesul de capturare


Se foloseste CaptureDeviceManger pentru accesarea dispozitivului de captura disponibil. Acest manager functioneaza ca un registru general al dispozitivelor disponibile pentru JMf. Se poate obtine lista dispozitivelor disponibile apeland metoda getDeviceList(). Un dispozitiv decaptura este reprezentat de un obiect CaptureDeviceInfo. Se foloseste metoda getDevice() a clasei CaptureDeviceManager pentru a obtine CaptureDeviceInfo pentru un anumit dispozitiv. Pnetru a folosi dispozitivul, trebuie obtinut MediaLocator de la obiectul CaptureDeviceInfo. Se poate folosi acest MediaLocator pentru a construi un Player sau un Processor direct, sau se poate folosi MediaLocator pentru a construi o DataSource care poate fi folosita ca intrare pentru un Player sau Processor. Pentru a porni captura se foloseste metoda start() a Player-uilui sau Processor-ului.

Folosind JMF se poate transmite sau receptiona in direct transmisiuni radio sau TV, conferinte realtime pe Internet sau intranet. O caracteristica a transportului media realtime care difera fata de accesarea unei ate statice este faptul ca un protocol realtime nu garanteaza venirea tuturor pachetelor in siguranta. O problema importanta este modul in care se recupereaza datele pierdute si se asigura intarzieri mici in receptia datelor.

In lucrul cu stream-uri media realtime se realizeaza transmisia fara sa se astepte tot stream-ul. De asemenea, transmisia realtime pe Internet necesita o latime debanda mare pentru ca datele primite sa fie continue. Traficul realtime necesita propriul protocol de transfer al pachetelor media, RTP Real-Time Transport Protocol. Nu exista garantia ca pachetele cu date RTP vor ajunge in ordinea in care au fost trimise, sau ca vor ajunge. Receptorul trebuie sa reconstruiasca secventa si sa detecteze pachetele pierdute folosind informatiile din header-ul pachetului.

_________________
One shot, one opportunity, one kill.
Let there be banned users!
avatar
+gZ.Flyking
Administrator
Administrator

Numarul mesajelor : 237
Data de inscriere : 05/06/2009
Varsta : 23
Localizare : Galati

Vezi profilul utilizatorului

Sus In jos

Sus


 
Permisiunile acestui forum:
Nu puteti raspunde la subiectele acestui forum