130 likes | 319 Views
Java Media Framework API. Theoretischer Hintergrund und Anwendungen von Daniel Birk. Themenübersicht. Java Media Framework (JMF) API Architektur des JMF API Wiedergabe/Presentation zeitbasierter Medien Bearbeitung/Processing zeitbasierter Medien Aufnahme/Capturing zeitbasierter Medien
E N D
Java Media Framework API Theoretischer Hintergrund und Anwendungen von Daniel Birk
Themenübersicht • Java Media Framework (JMF) API • Architektur des JMF API • Wiedergabe/Presentation zeitbasierter Medien • Bearbeitung/Processing zeitbasierter Medien • Aufnahme/Capturing zeitbasierter Medien • Echtzeitfunktionalität des JMF API • Aufbau und Einordnung des Real-Time Transport Protocol (RTP) • Senden von Streaming-Media • Empfangen von Streaming-Media • Anwendungen
Architektur des JMF API Java Media Framework API • Daten importieren, ver- bearbeiten, exportieren • Zeit-, Event- und Datenmodell • 3 Manager Klassen Abbildung aus JMF API Guide von sun
Wiedergabe zeitbasierter Medien Java Media Framework API • Klasse Player • player = Manager.createPlayer(p), .createRealizedPlayer(p) • Events entsprechend Status des Players • Wichtig: RealizeCompleteEvent • Kontroll- und Steuerelemente • Control[] controls = player.getControls(); • Steuereinheit • Visuelle Komponente • Lautstärkeregler • Dateiinformation
Konfigurationsphasen von Player und Processor Java Media Framework API Abbildung aus JMF API Guide von sun
Bearbeitung zeitbasierter Medien Java Media Framework API • Klasse Processor • proc = Manager.createProcessor(p) • Alle Tracks einer Datei • TrackControl[] tc = proc.getTrackControls() • Format, Kodierung und Darstellung festlegen • tc[1].setFormat(f), .setCodecChain(c), .setRenderer(r) • Dateiformat bestimmen • proc.setContentDescriptor(contenDescriptor) • Unterklasse von ContentDescriptor ist FileTypeDescriptor
Aufnahme zeitbasierter Medien Java Media Framework API • Klasse CaptureDeviceInfo • cdi = CaptureDeviceManager.getDevice(„deviceName“); • Processor erzeugen • mit dynamischen Einstellungen und Manager.createProcessor(p) • proc.setSource(cdi_source); • proc.setContentDescriptor(contentDesc); • proc.realize(); • Datei schreiben • Datenquelle erzeugen op = processor.getDataOutput() • Zieldatei angeben ml = new MediaLoacator(„file://demo.wav“) • Datensenke kreieren Manager.createDataSink(op, ml)
Real-Time Media Framework and Applications Real-Time Control Protocol (RTCP) Real-Time Transport Protocol (RTP) Other Network Transport Protocols (TCP, ATM, ST-II, etc) UDP Internet Protocol (IP) Aufbau und Einordnung des RTP Echtzeitfunktionalität des JMF API • Real-Time Transport Protocol (RTP) • Ende-zu-Ende Verbindung • Übertragung in Echtzeit • setzt meist auf UDP auf • Real-Time Control Protocol (RTCP) • Identifizierung u. Überwachung der Datenströme • Quality-of-Service Funktionalität Abbildung aus JMF API Guide von sun
Senden von Streaming-Media Echtzeitfunktionalität des JMF API • Übertragung mittels Processor und Sitzungen • DataSource, die zu übertragende Datei; Manager.createDataSource(url) • MediaLocator spezifiziert Empfänger rtp://192.168.0.1:49150/audio • DataSink, Repräsentator des Empfängers, Übertragung • Processor mit ProcessorModel • nur erster erkannter Stream einer Datei kann übertragen werden • Manager.createRealizedProcessor(ProcessorModel pm) • Processor mit SessionManager • Übertragung mehrerer Streams • sm.createSendStream(output, x); x: index des Streams oder mixed
Senden von Streaming-Media Echtzeitfunktionalität des JMF API Videodatei TrackControl[] tcBild Bild tcBild setFormat() getTrackControls() tcTon tcTon setEnabled(true) Ton x=1 tcBild tcBild realize() Single RTPStream createSendStream(output, x) tcTon x=0 tcTon tcBild Processor Mixed RTPStream
Empfangen von Streaming-Media Echtzeitfunktionalität des JMF API • Wiedergabe eines Streams • MediaLocator, analog zum Sender, rtp://192.168.0.1:49150/audio • Erzeugen des Players, Manager.createRealizedPlayer(ml) • Wiedergabe aller Streams • mittels SessionManager • NewReceiveStreamEvent bei jedem eingehenden Stream • Erzeugen eines Players bei jedem Event Abbildung aus JMF API Guide von sun
Anwendungen • Java Media Framework • Abspielen von Audio und Video • Konvertierung/Kompression • Aufnahme von WAVE mit Mikrophon
Fazit und Quellen • API Guide von sun: sehr gut, aber alt • Einleuchtende, intuitive Programmierung • JMF API Guide v. 2.0 von sun (1999) • Entwicklerbereich der IBM Website • https://www6.software.ibm.com/developerworks/education/j-jmf/index.html • API Dokumentation