Κατέβασμα παρουσίασης
Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε
ΔημοσίευσεAndres Korba Τροποποιήθηκε πριν 10 χρόνια
1
ΠΑΝΕΠΙΣΤΗΜΙΟ ΜΑΚΕΔΟΝΙΑΣ ΟΙΚΟΝΟΜΙΚΩΝ ΚΑΙ ΚΟΙΝΩΝΙΚΩΝ ΕΠΙΣΤΗΜΩΝ Τμήμα: Εφαρμοσμένης Πληροφορικής ΑΝΑΠΤΥΞΗ ΔΙΚΤΥΩΝ ΘΕΣΣΑΛΟΝΙΚΗ 2004
2
Media Streaming με χρήση Java και JMF ΚΑΤΕΡΤΖΗΣ ΚΩΝΣΤΑΝΤΙΝΟΣ ΚΑΤΕΡΤΖΗΣ ΚΩΝΣΤΑΝΤΙΝΟΣ Α.Μ. 41/02 Α.Μ. 41/02 ΕΞΑΜΗΝΟ Ζ’ ΕΞΑΜΗΝΟ Ζ’ Επιβλέπων Καθηγητής: Π. Φουληράς
3
ΣΥΝΘΗΚΕΣ ΠΟΥ ΕΠΕΒΑΛΑΝ ΤΗΝ ΑΝΑΠΤΥΞΗ ΤΟΥ JMF Εξάπλωση του Internet και των Δικτύων Εξάπλωση του Internet και των Δικτύων Ευρεία χρήση Video (εικόνα/ ήχος) Ευρεία χρήση Video (εικόνα/ ήχος) Έντονη παρουσία streaming media εφαρμογών στο Internet Έντονη παρουσία streaming media εφαρμογών στο Internet Απαίτηση για συνδυασμό προγραμματισμού και δικτύων Απαίτηση για συνδυασμό προγραμματισμού και δικτύων
4
Τι είναι το JMF ; Java Media Framework API Java Media Framework API Προεκτείνει την Java ώστε οι εφαρμογές της να υποστηρίζουν ήχο και βίντεο Προεκτείνει την Java ώστε οι εφαρμογές της να υποστηρίζουν ήχο και βίντεο Συγκεκριμένα επιτρέπει capture, αναπαραγωγή, μετάδοση, λήψη και αποθήκευση διαφόρων τύπων media Συγκεκριμένα επιτρέπει capture, αναπαραγωγή, μετάδοση, λήψη και αποθήκευση διαφόρων τύπων media
5
Εφαρμογές του JMF Αποστολή media (βίντεο ή/και ήχου) μέσω του RTP Αποστολή media (βίντεο ή/και ήχου) μέσω του RTP Λήψη media μέσω RTP Λήψη media μέσω RTP Εξαγωγή και αποθήκευση media που παρελήφθησαν Εξαγωγή και αποθήκευση media που παρελήφθησαν Πρόσβαση σε ανεξάρτητα video frames ενός Processor Πρόσβαση σε ανεξάρτητα video frames ενός Processor Δημιουργία ενός Movie αρχείου από μία λίστα εικόνων Δημιουργία ενός Movie αρχείου από μία λίστα εικόνων
6
Εφαρμογές του JMF (συνέχεια) Επεξεργασία ληφθέντων media Επεξεργασία ληφθέντων media Αναπαραγωγή αρχείων βίντεο και ήχου Αναπαραγωγή αρχείων βίντεο και ήχου Λήψη βίντεο και/ ή ήχου μέσω κάμερας και μικροφώνου και αποστολή μέσω Internet Λήψη βίντεο και/ ή ήχου μέσω κάμερας και μικροφώνου και αποστολή μέσω Internet Ζωντανή εκπομπή ραδιοτηλεοπτικών προγραμμάτων Ζωντανή εκπομπή ραδιοτηλεοπτικών προγραμμάτων
7
Προαπαιτούμενα 166 MHz Pentium, 160 MHz PowerPC, ή 166 MHz UltraSparc 32 MB RAM ή μεγαλύτερη Προαιρετικά, μια κατάλληλη κάρτα ήχου για αναπαραγωγή ήχου 166 MHz Pentium, 160 MHz PowerPC, ή 166 MHz UltraSparc 32 MB RAM ή μεγαλύτερη Προαιρετικά, μια κατάλληλη κάρτα ήχου για αναπαραγωγή ήχου Windows 95/98/NT 4.0/2000, Solaris/SPARC και κάθε συμβατό με Java λειτουργικό σύστημα Windows 95/98/NT 4.0/2000, Solaris/SPARC και κάθε συμβατό με Java λειτουργικό σύστημα JDK 1.1 ή επόμενη έκδοση JDK 1.1 ή επόμενη έκδοση
8
Αρχιτεκτονική του JMF Το βασικό μοντέλο του JMF θυμίζει σε μεγάλο βαθμό το μοντέλο ενός κοινού Video Player (VCR) Το βασικό μοντέλο του JMF θυμίζει σε μεγάλο βαθμό το μοντέλο ενός κοινού Video Player (VCR) Video Camera (Capture Device) Video Tape (DataSource) VCR (Player) Output Devices (Destination)
9
Αρχιτεκτονική του JMF (συνέχεια) Αναφορά ορισμένων σημαντικών όρων του JMF Αναφορά ορισμένων σημαντικών όρων του JMF DataSource DataSource DataSource MediaStream MediaStream MediaStream Capture Device Capture Device Capture Device Capture Device DataSink DataSink DataSink Player Player Player Processor Processor Processor Managers Managers Managers Event Model Event Model Event Model Event Model Session Session Session
10
Εγκατάσταση του JMF (για Windows) Από την ιστοσελίδα της Java κατεβάζουμε το σχετικό εκτελέσιμο αρχείο. Για να κατεβάσετε το JMF πατήστε εδώ. Από την ιστοσελίδα της Java κατεβάζουμε το σχετικό εκτελέσιμο αρχείο. Για να κατεβάσετε το JMF πατήστε εδώ.Java εδώJava εδώ Τρέχουμε το αρχείο Τρέχουμε το αρχείο Ελέγχουμε αν το Path και το ClassPath έχουν τροποποιηθεί ως εξής: set PATH=%JMFDIR%\lib;%PATH% Ελέγχουμε αν το Path και το ClassPath έχουν τροποποιηθεί ως εξής: set PATH=%JMFDIR%\lib;%PATH% Set CLASSPATH=%JMFDIR%\lib\jmf.jar;%JMFDIR%\lib\sound.jar;.;%CLASSPATH% Set CLASSPATH=%JMFDIR%\lib\jmf.jar;%JMFDIR%\lib\sound.jar;.;%CLASSPATH%
11
Εγκατάσταση του JMF (για Windows) συνέχεια Για να σιγουρευτείτε ότι η εγκατάσταση του JMF είναι επιτυχής, μπορείτε να ‘τρέξετε’ το applet που παρέχει η Java και ελέγχει εάν οι κλάσεις και οι βιβλιοθήκες του JMF έχουν εγκατασταθεί σωστά. Για να πραγματοποιήσετε τον σχετικό έλεγχο πληκτρολογήστε εδώ Για να σιγουρευτείτε ότι η εγκατάσταση του JMF είναι επιτυχής, μπορείτε να ‘τρέξετε’ το applet που παρέχει η Java και ελέγχει εάν οι κλάσεις και οι βιβλιοθήκες του JMF έχουν εγκατασταθεί σωστά. Για να πραγματοποιήσετε τον σχετικό έλεγχο πληκτρολογήστε εδώεδώ
12
Υποστηριζόμενα Formats Για αναπαραγωγή : AIFF (.aiff), AVI (.avi), GSM (.gsm), HotMedia (.mvr), MIDI (.mid), MPEG-1 Video (.mpg), MPEG Layer II Audio (.mp2), QuickTime (.mov), Sun Audio (.au), Wave (.wav) Για αναπαραγωγή : AIFF (.aiff), AVI (.avi), GSM (.gsm), HotMedia (.mvr), MIDI (.mid), MPEG-1 Video (.mpg), MPEG Layer II Audio (.mp2), QuickTime (.mov), Sun Audio (.au), Wave (.wav) Για κωδικοποίηση/ αποκωδικοποίηση και αποστολή/ λήψη αντίστοιχα : Audio: G.711 (U-law) 8 kHz, Audio: GSM mono, Audio: G.723 mono, Audio: 4-bit mono DVI 8 kHz, Audio: 4-bit mono DVI 11.025 kHz, Audio: 4-bit mono DVI 22.05 kHz, Audio: MPEG Layer I, II, Video: JPEG (420, 422, 444)*, Video: H.261, Video: H.263, Video: MPEG-I Για κωδικοποίηση/ αποκωδικοποίηση και αποστολή/ λήψη αντίστοιχα : Audio: G.711 (U-law) 8 kHz, Audio: GSM mono, Audio: G.723 mono, Audio: 4-bit mono DVI 8 kHz, Audio: 4-bit mono DVI 11.025 kHz, Audio: 4-bit mono DVI 22.05 kHz, Audio: MPEG Layer I, II, Video: JPEG (420, 422, 444)*, Video: H.261, Video: H.263, Video: MPEG-I * JPEG/RTP αρχεία μπορούν να μεταδοθούν μόνο σε βίντεο διαστάσεις πολλαπλάσιες των 8 pixels * JPEG/RTP αρχεία μπορούν να μεταδοθούν μόνο σε βίντεο διαστάσεις πολλαπλάσιες των 8 pixels
13
Ενδεικτικές Κλάσεις και Διεπιφάνειες του JMF AudioFormat AudioFormat VideoFormat VideoFormat BufferControl BufferControl CaptureDevice CaptureDevice Cloneable DataSource Cloneable DataSource Data Sink Data Sink EndOfStreamEvent EndOfStreamEvent FormatChangeEvent FormatChangeEvent ConfigureCompleteEvent ConfigureCompleteEvent PushBufferDataSource PushBufferDataSource
14
Ενδεικτικές Κλάσεις και Διεπιφάνειες του JMF (συνέχεια) PullBufferDataSource PullBufferDataSource PushBufferStream PushBufferStream PullBufferStream PullBufferStream InputSourceStream InputSourceStream PacketSizeControl PacketSizeControl Processor Processor Player Player Track Track NewSendStreamEvent NewSendStreamEvent SendPayloadChangeEvent SendPayloadChangeEvent
15
Εφαρμογή JMF Αποστολή και Λήψη Βίντεο Στον ένα Η/Υ εκτελείται ένα πρόγραμμα το οποίο εκπέμπει βίντεο, δημιουργώντας ένα RTP Session για κάθε κανάλι δεδομένων (media tracks). Για τον λόγο αυτό χρησιμοποιείται το RTPSession API αντί του DataSink API. Ιδιαίτερη προσοχή απαιτείται στο μέγεθος του προς μετάδοση βίντεο έτσι ώστε να είναι κατάλληλο για RTP μετάδοση. Στον ένα Η/Υ εκτελείται ένα πρόγραμμα το οποίο εκπέμπει βίντεο, δημιουργώντας ένα RTP Session για κάθε κανάλι δεδομένων (media tracks). Για τον λόγο αυτό χρησιμοποιείται το RTPSession API αντί του DataSink API. Ιδιαίτερη προσοχή απαιτείται στο μέγεθος του προς μετάδοση βίντεο έτσι ώστε να είναι κατάλληλο για RTP μετάδοση. Το πρόγραμμα δέχεται τρεις παραμέτρους ως είσοδο: Το πρόγραμμα δέχεται τρεις παραμέτρους ως είσοδο: 1: Την διεύθυνση όπου βρίσκεται το αρχείο 2: Την ΙΡ διεύθυνση προορισμού 3: Τη θύρα βάση από όπου θα αρχίσει η μετάδοση των tracks π.χ. AVTransmit2 file:/C:/mine/movie.mpg 129.130.131.132 22222
16
Εφαρμογή JMF Αποστολή και Λήψη Βίντεο (συνέχεια) Η διεύθυνση του αρχείου μπορεί να είναι Η διεύθυνση του αρχείου μπορεί να είναι είτε το path του αρχείου π.χ. file:/C:/mine/movie.mpg είτε μία http διεύθυνση π.χ. http://mediacentral.com/speech.avi http://mediacentral.com/speech.avi είτε μία πηγή που λαμβάνει τα media π.χ. javasound://8000 Η διεύθυνση του μακρινού υπολογιστή μπορεί να είναι είτε η διεύθυνση ενός Η/Υ π.χ. 129.130.131.132 είτε μία διεύθυνση εκπομπής π.χ. 129.130.131.255 Η διεύθυνση του μακρινού υπολογιστή μπορεί να είναι είτε η διεύθυνση ενός Η/Υ π.χ. 129.130.131.132 είτε μία διεύθυνση εκπομπής π.χ. 129.130.131.255 Η θύρα που προσδιορίζουμε (BasePort) είναι η πρώτη θύρα από την οποία θα ‘φύγει’ το πρώτο track. Το επόμενο θα φεύγει από την BasePort+2 κ.ο.κ. Προσοχή: το BasePort πρέπει να είναι άρτιος αριθμός και φυσικά να μην χρησιμοποιείται από κάποιο άλλο πρόγραμμα του Η/Υ μας. Η θύρα που προσδιορίζουμε (BasePort) είναι η πρώτη θύρα από την οποία θα ‘φύγει’ το πρώτο track. Το επόμενο θα φεύγει από την BasePort+2 κ.ο.κ. Προσοχή: το BasePort πρέπει να είναι άρτιος αριθμός και φυσικά να μην χρησιμοποιείται από κάποιο άλλο πρόγραμμα του Η/Υ μας.
17
Εφαρμογή JMF Αποστολή και Λήψη Βίντεο (συνέχεια) Στον δεύτερο Η/Υ εκτελείται ένα πρόγραμμα το οποίο λαμβάνει το βίντεο και σε πραγματικό χρόνο το παρουσιάζει στην οθόνη μας. Συγκεκριμένα το δεύτερο αυτό πρόγραμμα ανοίγει ένα RTP Session για κάθε ορισμένη session διεύθυνση, ‘ακούει’ για NewReceiveStreamEvent μέσω της ReceiveStreamListener μεθόδου και δημιουργεί ένα JMF Player για κάθε ένα νέο stream που καταφθάνει για αναπαραγωγή. Στον δεύτερο Η/Υ εκτελείται ένα πρόγραμμα το οποίο λαμβάνει το βίντεο και σε πραγματικό χρόνο το παρουσιάζει στην οθόνη μας. Συγκεκριμένα το δεύτερο αυτό πρόγραμμα ανοίγει ένα RTP Session για κάθε ορισμένη session διεύθυνση, ‘ακούει’ για NewReceiveStreamEvent μέσω της ReceiveStreamListener μεθόδου και δημιουργεί ένα JMF Player για κάθε ένα νέο stream που καταφθάνει για αναπαραγωγή. Το πρόγραμμα δέχεται δύο παραμέτρους ως είσοδο: 1: Την ΙΡ διεύθυνση του Η/Υ που στέλνει τα δεδομένα 2: Την θύρα από όπου θα γίνει η παραλαβή των tracks. π.χ. java AVReceive2 129.130.131.126/22222
18
Εφαρμογή JMF Αποστολή και Λήψη Βίντεο (συνέχεια) Η πρώτη παράμετρος μπορεί να είναι Η πρώτη παράμετρος μπορεί να είναι είτε η ΙΡ διεύθυνση του Η/Υ που στέλνει τα δεδομένα είτε η διεύθυνση εκπομπής του δικτύου Η θύρα που ορίζουμε πρέπει να είναι η ΙΔΙΑ με την θύρα που έχει ορίσει ο Η/Υ που στέλνει τα δεδομένα Η θύρα που ορίζουμε πρέπει να είναι η ΙΔΙΑ με την θύρα που έχει ορίσει ο Η/Υ που στέλνει τα δεδομένα
19
Εφαρμογή JMF Λήψη και Παρουσίαση Βίντεο Εφόσον έχετε εγκαταστήσει το JMF μπορείτε πληκτρολογώντας εδώ να ‘κατεβάσετε’ και να δείτε σε πραγματικό χρόνο (real-time) ένα μικρό βίντεο (προσοχή: μέγεθος 1,13 MB), ως παράδειγμα εφαρμογής του JMF. Ο κώδικας που χρησιμοποιείται είναι ο SimplePlayerApplet.java. Εφόσον έχετε εγκαταστήσει το JMF μπορείτε πληκτρολογώντας εδώ να ‘κατεβάσετε’ και να δείτε σε πραγματικό χρόνο (real-time) ένα μικρό βίντεο (προσοχή: μέγεθος 1,13 MB), ως παράδειγμα εφαρμογής του JMF. Ο κώδικας που χρησιμοποιείται είναι ο SimplePlayerApplet.java.εδώSimplePlayerApplet.javaεδώSimplePlayerApplet.java
20
Πιθανά Προβλήματα και Λύσεις Μήνυμα λάθους: Exception in thread “main” java.lang.NoClassDefFoundError Μήνυμα λάθους: Exception in thread “main” java.lang.NoClassDefFoundError Αιτία: οι κλάσεις και οι βιβλιοθήκες του JMF δεν έχουν εγκατασταθεί σωστά. Σιγουρευτείτε ότι το Path και το ClassPath έχουν τροποποιηθεί ως εξής: set PATH=%JMFDIR%\lib;%PATH% Set CLASSPATH=%JMFDIR%\lib\jmf.jar;%JMFDIR%\lib\sound.jar;.;%CLASSPATH% Set CLASSPATH=%JMFDIR%\lib\jmf.jar;%JMFDIR%\lib\sound.jar;.;%CLASSPATH% Μήνυμα λάθους (στον Η/Υ που δέχεται τα δεδομένα): Μήνυμα λάθους (στον Η/Υ που δέχεται τα δεδομένα): -Open RTP session for: addr: ***.***.***.*** port: ***** ttl: 1 - Waiting for RTP data to arrive… - A new participant has just joined: “name of participant” - Waiting for RTP data to arrive…... No RTP data was received - Got “bye” from: “name of distant participant” Failed to initialize the sessions.
21
Πιθανά Προβλήματα και Λύσεις (συνέχεια) Αιτία: Πιθανώς να έχετε ορίσει διαφορετικά ports ως δεδομένα εισόδου στους δύο Η/Υ. Ωστόσο εάν τα ports έχουν ορισθεί σωστά (είναι δηλαδή ελεύθερα και είναι τα ίδια στις δύο μεριές), δοκιμάστε στον Η/Υ που στέλνει τα δεδομένα αντί για την διεύθυνση του μακρινού Η/Υ να χρησιμοποιήσετε μία διεύθυνση εκπομπής για το δίκτυό σας, δηλαδή ***.***.***.255 Λαμβάνετε βίντεο αλλά δεν έχετε εικόνα. Λαμβάνετε βίντεο αλλά δεν έχετε εικόνα. Αιτία: εάν το βίντεό σας έχει εικόνα και ήχο, αυτό προγραμματιστικά σημαίνει ότι τα tracks του Processor είναι διαφορετικού τύπου media και για αυτό κάθε media stream στέλλεται σε ξεχωριστό RTP session. Αντιστοίχως ο παραλήπτης θα πρέπει να ορίσει δύο αρχικά sessions. Δηλαδή θα πρέπει να εκτελέσει το πρόγραμμά του κάπως έτσι: java AVReceive2 129.144.251.182/22222 129.144.251.182/22224
22
Πιθανά Προβλήματα και Λύσεις (συνέχεια) Μήνυμα λάθους (στον Η/Υ που δέχεται τα δεδομένα): Μήνυμα λάθους (στον Η/Υ που δέχεται τα δεδομένα): AVReceive2 internal error: javax.media.ControllerErrorEvent[ source= com.sun.media.content.unknown.Handler1989f84, message= Internal module com.sun.media.BasicRendererModule1b60280: failed to handle a data format change! ] Αιτία: το format του βίντεο δεν υποστηρίζεται από το JMF για αποκωδικοποίηση. Δοκιμάστε κάποιο άλλο format.
Παρόμοιες παρουσιάσεις
© 2024 SlidePlayer.gr Inc.
All rights reserved.