Java Media Framework API

Werbung
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
Java Media Framework API
Architektur des JMF API

Daten importieren, ver- bearbeiten, exportieren

Zeit-, Event- und Datenmodell

3 Manager Klassen
Abbildung aus JMF API Guide von sun
Java Media Framework API
Wiedergabe zeitbasierter Medien

Klasse Player


Events entsprechend Status des Players


player = Manager.createPlayer(p), .createRealizedPlayer(p)
Wichtig: RealizeCompleteEvent
Kontroll- und Steuerelemente

Control[] controls = player.getControls();

Steuereinheit

Visuelle Komponente

Lautstärkeregler

Dateiinformation
Java Media Framework API
Konfigurationsphasen von Player und Processor
Abbildung aus JMF API Guide von sun
Java Media Framework API
Bearbeitung zeitbasierter Medien

Klasse Processor


Alle Tracks einer Datei


TrackControl[] tc = proc.getTrackControls()
Format, Kodierung und Darstellung festlegen


proc = Manager.createProcessor(p)
tc[1].setFormat(f), .setCodecChain(c), .setRenderer(r)
Dateiformat bestimmen

proc.setContentDescriptor(contenDescriptor)

Unterklasse von ContentDescriptor ist FileTypeDescriptor
Java Media Framework API
Aufnahme zeitbasierter Medien

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)
Echtzeitfunktionalität des JMF API
Aufbau und Einordnung des RTP


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
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)
Abbildung aus JMF API Guide von sun
Echtzeitfunktionalität des JMF API
Senden von Streaming-Media



Ü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
Echtzeitfunktionalität des JMF API
Senden von Streaming-Media
Videodatei
Bild
TrackControl[]
getTrackControls()
tcBild
tcTon
Ton
setFormat()
setEnabled(true)
tcBild
tcTon
x=1
tcBild
tcBild
realize()
tcTon
createSendStream(output, x)
Single RTPStream
x=0
tcTon
tcBild
Processor
Mixed RTPStream
Echtzeitfunktionalität des JMF API
Empfangen von Streaming-Media


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
Herunterladen