Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

Java Media Framework (JMF)  Τι είναι το JMF  Τι υποστηρίζει  Πού χρησιμοποιείται  Προβλήματα και λύσεις  Το μέλλον.

Παρόμοιες παρουσιάσεις


Παρουσίαση με θέμα: "Java Media Framework (JMF)  Τι είναι το JMF  Τι υποστηρίζει  Πού χρησιμοποιείται  Προβλήματα και λύσεις  Το μέλλον."— Μεταγράφημα παρουσίασης:

1 Java Media Framework (JMF)  Τι είναι το JMF  Τι υποστηρίζει  Πού χρησιμοποιείται  Προβλήματα και λύσεις  Το μέλλον

2 Τι είναι το JMF Είναι ένα API για την ενσωμάτωση και διαχείριση ήχου και video μέσα σε εφαρμογές (applications και applets) Java. 1.Παρουσίαση (presentation) 2.Επεξεργασία (processing): i.(Απο)Πολυπλεξία (multiplexing-demultiplexing) ii.Μετατροπή format (transcoding) iii.Εφαρμογή φίλτρων (effect) 3.Λήψη και αποστολή δεδομένων από/προς το Internet. 4.Καταγραφή από συσκευές (π.χ. κάμερα, μικρόφωνο) Τι εννοούμε με «ενσωμάτωση και διαχείριση»?

3 Υποστηριζόμενα Format (2.1.1)  Πρωτoκόλλων  File, HTTP, FTP, RTP/RTSP  Ήχου  Σύμφωνα με τη SUN: AIFF, AU, AVI, GSM, MIDI, MP2, QT, RMF, WAV, MP3  Από δοκιμές: παίζει WAV, AVI και το MP3 παίζει με plug-in  Από δοκιμές: δεν παίζει WAV, AVI και το MP3 παίζει με plug-in  Video  Σύμφωνα με τη SUN: AVI, MPEG-1, QT, H.261, H.263  Από δοκιμές: παίζει AVI.  Από δοκιμές: δεν παίζει AVI.  Σημαντικό: Δεν υποστηρίζονται  MPEG-2,  MPEG-4  Αναπαραγωγή CD/DVD

4 Γενικό Μοντέλο JMF

5 Το μοντέλο του JMF ( 1/4 ) Αποκωδικοποιεί τα δεδομένα και τα παρουσιάζει Λαμβάνει τα δεδομένα Υλοποιεί τη μηχανή καταστάσεων Renders Creates ControlsFeeds

6 Το μοντέλο του JMF ( 2/4 )  Χρησιμοποιεί τους Managers για:  Κατασκευή Player ( Manager.createPlayer() )  Κατασκευή Processor ( Manager.createProcessor() )  Κατασκευή Controller  Κατασκευή DataSource  Κατασκευή DataSink  Διαχείριση των Plug-Ins ( PlugInManager )

7 Το μοντέλο του JMF ( 3/4 )  MediaLocator: Καθορίζει τη διεύθυνση του αρχείου, μαζί με το πρωτόκολλο επικοινωνίας (file, url, rtp, κ.λπ.)  DataSource: Η «πηγή» από όπου προέρχονται τα δεδομένα. Χρησιμοποιεί το MediaLocator.  Player: «παρουσιάζει» τα δεδομένα, είτε στην οθόνη, είτε στα ηχεία, που προέρχονται από το DataSource (ή από τον MediaLocator απ’ ευθείας).  Processor: Player με πρόσθετη λειτουργικότητα, για διαχείριση των δεδομένων.  DataSink: Η «έξοδος» των δεδομένων (συνήθως αναφέρεται σε αρχείο).

8 Το μοντέλο του JMF ( 4/4 )  Μοντέλο Δεδομένων (Data Model)  Αφορά DataSource ( είτε Push είτε Pull ), είτε DataSink  Χρονικό Μοντέλο (Time Model)  Χρησιμοποιείται για τον καθορισμό διάρκειας, για συγχρονισμό, κ.ά.  Μοντέλο Ελέγχου (Controls Model)  Έλεγχος του media από τον χρήστη (start, stop, κ.λπ)  Μοντέλο Plug-In  Αφορά ό,τι υπάρχει στο JMF ως plug-in, δλδ: renderers, codecs, (de)multiplexers  Μοντέλο Γεγονότων (Event Model)

9 Μοντέλο Γεγονότων (Event Model)  Χρησιμοποιείται ώστε 1.Να επιτρέπει την επέμβαση του χρήστη (start, stop) 2.Να διαπιστώνει σφάλματα και συμβάντα (π.χ. EndOfMediaEvent) 3.Να διατηρεί συγχρονισμένα τα δεδομένα ήχου και video! 4.Να αναγνωρίζει αλλαγές, όταν πρόκειται για σύνδεση rtp.  Είναι καθοριστικό για τη σωστή ροή του προγράμματος, αφού ο player στηρίζεται σε μια μηχανή καταστάσεων!

10 JMF MediaLocator  Περιγράφει την τοποθεσία όπου βρίσκεται το περιεχόμενο που θέλουμε να παρουσιάσουμε.  Η πηγή μπορεί να αφορά:  URL  Τοπικό αρχείο  Παράδειγμα:  MediaLocator src = new MediaLocator(“file://” + path);  MediaLocator src = new MediaLocator(“url://” + path);

11 JMF Player (1/2)  Πρόκειται για Interface, όχι για Class  Χρήση (συνήθως) ενός MediaLocator (ML) για τον καθορισμό της «πηγής» των δεδομένων.  Ένας Player κάνει rendering των δεδομένων που του «δώσαμε». Η έξοδος των δεδομένων μας είναι (συνήθως) τα ηχεία και η οθόνη.  Δημιουργία:  Player p = Manager.createPlayer(ML);

12 JMF Player (2/2)  Για να λειτουργήσει ο player, πρέπει να φτάσει σε realized κατάσταση. Αυτό γίνεται με την p.realize()  ΠΡΟΣΟΧΗ: Η p.realize() είναι ασύγχρονη και επιστρέφει αμέσως!  Έλεγχος μέσω events, π.χ. RealizeCompleteEvent  Κατόπιν, καλείται η p.start() για την αναπαραγωγή των δεδομένων.  Με την p.stop() σταματά η αναπαραγωγή των δεδομένων.  Παρέχει τα Components στα οποία θα προβληθούν τα δεδομένα (p.getVisualComponent) και τα Components χειρισμού (p.getControlPanelComponent)

13

14

15 JMF Processor (1/3)  Παρέχει ό,τι και ο Player, με τον ίδιο ακριβώς τρόπο, συν επιπλέον λειτουργικότητα  Αποτελεί Interface, που κληρονομεί τον Player  Τι παραπάνω κάνει ο Processor?  Copying/Transcoding  Καθορίζει τα effect  Καθορίζει τους codecs  Ενέργειες πάνω στα Tracks ξεχωριστά  Καθορίζει τη σειρά των παραπάνω (codec chain)

16 JMF Processor (2/3)  Ένας Processor, πριν γίνει realized, μπορεί να γίνει και configured! (event model)  Σκοπός:  Να έχει τις απαιτούμενες πληροφορίες ώστε να διαχειριστεί σωστά τα δεδομένα.  Να μπορούμε να διαχειριστούμε προγραμματιστικά το περιεχόμενο και τις ενέργειες που θα κάνει  Διαχείριση των tracks γίνεται με τη μέθοδο getTrackControls, που επιστρέφει ένα TrackControl για κάθε Track  Διαχείριση της εξόδου του Processor γίνεται με την setContentDescriptor.

17 JMF Processor (3/3)  Η setContentDescriptor καθορίζει το format του multiplexing (και άρα της εξόδου).  Με setContentDescriptor(null), συμπεριφέρεται ως Player.  Σημαντικό: Η έξοδος του Processor είναι DataSource. Άρα, μπορεί να είναι είσοδος για άλλο processor/player ή για αναμετάδοση στο net.

18 JMF RTP/RTCP/RTSP  RTP: Real Time Transport Protocol  Το JMF υποστηρίζει RTP/RTCP μέσω κατάλληλων API’s.  Η παρουσίαση των δεδομένων που προέρχονται μέσω RTP σύνδεσης, γίνεται από τον Player (ή από Processor).  Χρήση Session Manager για πολλαπλές RTP συνδέσεις. Κάθε RTP σύνδεση διαχειρίζεται ξεχωριστά (π.χ. η 1η πάει σε player, η 2η σε αρχείο κ.λπ.)

19 JMF και RTSP  Το JMF υποστηρίζει RTSP στην πλευρά του client  Δεν υποστηρίζει RTSP στην πλευρά του server  Το RTSP είναι ενσωματωμένο μέσα στον Player.  Για χρήση του RTSP, αρκεί να κατασκευάσουμε έναν Player (ισχύει και για Processor, από την έκδοση 2.1.1 beta3) με MediaLocator που να αφορά rtsp URL. Π.χ. rtsp://host:port/mediafile (default port: 554)

20 Προβλήματα του JMF (v2.1.1e)  Δεν παίζει Mp3.  Δεν παίζει Mpeg2, Mpeg4 (video).  Ο Processor δε συμπεριφέρεται ακριβώς όπως ο Player, όταν κάνουμε setContentDescriptor(null) (συνήθως αφορά το στάδιο της παρουσίασης)  Από τα υποστηριζόμενα Format, παίζουν συγκεκριμένοι τύποι (π.χ. από τα.avi αρχεία παίζουν μόνο τα Cinepak).  Αργή εξέλιξη: v1.0 το ’98, v2.0 το ’99, v2.1.1e το 2002

21 Λύσεις  Υπάρχει εξωτερικό plug-In, γραμμένο σε Java, που να υποστηρίζει mp3  Για το Mpeg-4, υπάρχει plug-In, γραμμένο σε Java, από την IBM  Χρησιμοποιούμε τον Processor για την προσαρμογή φίλτρων, και output σε DataSource που θα είναι το Input ενός Player.  Δικές μας υλοποιήσεις των Player, Processor, DataSource, DataSink, όλων ή μέρους αυτών  Για το Mpeg-2, υπάρχουν αρκετά project τα οποία στηρίζονται σε Native βιβλιοθήκες (codec) και χρησιμοποιούν JNI για να επικοινωνεί η Java με αυτές  Πρόβλημα: Δεδομένου ότι οι βιβλιοθήκες είναι Native, για κάθε διαφορετικό σύστημα χρειαζόμαστε διαφορετική υλοποίηση. Καταργούμε τη μεταφερσισμότητα.

22 Λύσεις (για Mpeg-2)  Project που υποστηρίζουν περισσότερα format από το JMF, μέσω Native libraries:  FFMPEG (libavcodec): Υποστηρίζει Mpeg-2, Mpeg-4. Πλήρης λίστα εδώ. Δεν υποστηρίζει RTSP. Project που το χρησιμοποιούν εδώ. JMF wrapper του FFMPEG μπορεί να βρεθεί εδώ εδώ  JFFMPEG: Υποστηρίζει (video) Mpeg1, Mpeg2, Mpeg4, DivX, XViD, H263(/RTP), (audio)AC3, MP3  FMJ: Προσπαθεί να αντικαταστήσει το JMF. Δεν υποστηρίζει JMF. Δεν υποστηρίζει αρκετά format.  FOBS: FOBS4JMF. Χρησιμοποιεί το FFMPEG. Περισσότερες πληροφορίες εδώ εδώ  sJMF: Χρησιμοποιείται για video conferencing. Υποστηρίζει MPEG-2, MPEG-4 codecs, για Windows και Linux. Πληροφορίες εδώ εδώ

23 Άλλες Λύσεις  QTJ: QuickTime for Java.  Πρόκειται για ένα API του QuickTime γραμμένο σε Java. Παρέχει όλες τις δυνατότητες του QuickTime. Μπορεί να γίνει Integration QuickTime εφαρμογών μέσα σε Java. Θα χρησιμοποιηθεί αντί του JMF.  Προβλήματα: Το QuickTime υπάρχει μόνο για Windows και Mac. Όχι για Linux.  JavaTV  Σύμφωνα με τον Michael Bundschuh (Java Software/ Sun Microsystems, Inc.), το JavaTV ελέγχει έναν MPEG-2 decoder σε επίπεδο υλικού (hardware decoder).

24 Βιβλιογραφία και Χρήσιμα Links  Java Media Framework API Guide  Java Media Framework Basics, IBM  Quick Time for Java: A Developer's Notebook  Essential JMF - Java Media Frameworκ  Java Media Framework and Sound  http://www.oreillynet.com/mac/blog/2005/12/jmf_a_mistake_asking_to_b e_rem.html  http://developer.apple.com/quicktime/qtjava/  http://www.onjava.com/pub/a/onjava/2002/12/23/jmf.html  http://ffmpeg.mplayerhq.hu/  http://fmj.sourceforge.net/jmf-projects.html  http://jffmpeg.sourceforge.net/  http://fobs.sourceforge.net/  http://archives.java.sun.com/archives/jmf-interest.html  http://java.sun.com/products/java-media/jmf/2.1.1/faq-jmf.html  http://java.sun.com/products/java-media/jmf/2.1.1/solutions/  http://java.sun.com/products/java-media/jmf/2.1.1/formats.html  http://java.sun.com/products/java-media/jmf/2.1.1/apidocs/index-all.html


Κατέβασμα ppt "Java Media Framework (JMF)  Τι είναι το JMF  Τι υποστηρίζει  Πού χρησιμοποιείται  Προβλήματα και λύσεις  Το μέλλον."

Παρόμοιες παρουσιάσεις


Διαφημίσεις Google