Java Media Framework

Werbung
Java Media Framework
„Capturing, processing, and presenting
time-based media with JAVA.“
Java Media Framework - Monika Wnuk
1
02.06.2003
Java Media Framework
ƒ Definition:
Java Media Framework (kurz: JMF) ist eine API
für die Integration von zeitabhängigen Medien in
Java-Applets und -Applikationen.
ƒ JMF unterstützt:
ƒ Erfassung (Capture)
ƒ Verarbeitung (Processing)
ƒ Präsentation (Presentation)
...von zeitabhängigen Medien.
Java Media Framework - Monika Wnuk
2
02.06.2003
Übersicht
ƒ JMF-Architektur
ƒ Präsentation von Mediendaten
ƒ Verarbeitung von Mediendaten
ƒ Erfassung von Mediendaten
ƒ Daten-Speicherung und -Übertragung
ƒ Erweiterbarkeit des JMF
ƒ Aufgabe: JMF Terminal
ƒ Links und Hinweise
Java Media Framework - Monika Wnuk
3
02.06.2003
JMF-Architektur (1)
ƒ Unterstützte Dateiformate:
Videoformate
Audioformate
AVI
AIFF
MPEG
GSM
Quicktime
WAVE
Sun Audio
MIDI
RMF
Java Media Framework - Monika Wnuk
4
02.06.2003
JMF-Architektur (2)
ƒ High-Level & Low-Level Architektur:
ƒ High-Level API: Erfassung, Präsentation, und
Bearbeitung zeitabhängiger Medien
ƒ Low-Level API: Plug-Ins (Erweiterungen)
Java Media Framework - Monika Wnuk
5
02.06.2003
JMF-Architektur (3)
ƒ Basismodell:
Eingabegeräte
(Capture Devices)
Datenquelle
(Data Source)
Player
Ausgabegeräte
(Output Devices)
Java Media Framework - Monika Wnuk
6
02.06.2003
JMF-Architektur (4)
ƒ Das Zeitmodell:
ƒ Verfolgung der Zeit für einen „einzelnen“
Medienstrom durch Grundfunktionen für Timing
und Synchronisation:
Clock-Interface:
ƒ TimeBase (konstant tickende Zeitquelle)
ƒ MediaTime (aktuelle Position im Medienstrom)
ƒ Rate (Playback Rate)
ƒ Zusätzlich: Duration-Interface
Formel:
MediaTime = MediaStartTime + Rate(TimeBaseTime
- TimeBaseStartTime)
Java Media Framework - Monika Wnuk
7
02.06.2003
JMF-Architektur (5)
ƒ Die Manager:
ƒ Vermittlerobjekte zwischen den zahlreichen
Interfaces und Implementierungen davon:
ƒ Manager (zur Konstruktion von Player-, Processor-,
DataSource-, und DataSink- Objekten)
Bsp: Manager.createPlayer(dataSource);
ƒ PackageManager (Register aller Pakete, die die JMFDateien enthalten)
ƒ CaptureDeviceManager (Register aller vorhandenen
Eingabegeräte)
ƒ PlugInManager (Register aller verfügbaren Plug-Ins,
z.B. Multiplexer, Codecs)
Java Media Framework - Monika Wnuk
8
02.06.2003
JMF-Architektur (6)
ƒ Das Ereignismodell:
ƒ Strukturierter Eventmechanismus (Lieferung von
Infos über den aktuellen Zustand des
Mediensystems; Möglichkeit, auf medienbezogene Fehler zu reagieren)
ƒ MediaEvent (Subklassen: GainChangeEvent,
DataSinkEvent, ControllerEvent, etc.)
ƒ Implementieren eines Listener-Interfaces &
Registrieren des eventauslösenden Objektes
durch den Aufruf von addListener(), z.B.
player.addControllerListener(listener);
Java Media Framework - Monika Wnuk
9
02.06.2003
JMF-Architektur (7)
ƒ Das Datenmodell:
ƒ DataSource (Datenquelle):
ƒ Enthält Information über Location sowie Protokoll und
Software von Medien
ƒ Location: URL oder MediaLocator
ƒ Protokoll: HTTP, FILE, RTP
ƒ Dient der Transferverwaltung
ƒ Eine DataSource kann nicht wiederverwendet werden!
(Eine DataSource pro Stream)
ƒ Kategorisierung nach der Art der Transfereinleitung:
ƒ Pull-DataSource (Client startet Transfer, z.B. HTTP, FILE)
ƒ Push-DataSource (Server startet Transfer, z.B. RTP)
ƒ Besondere DataSources: CloneableDataSource,
MergingDataSource
Java Media Framework - Monika Wnuk
10
02.06.2003
JMF-Architektur (8)
ƒ Die Steuerung (Controls):
ƒ JMF-Control bietet einen Mechanismus für das
Setzen und Abfragen von Objektattributen
ƒ Eine Control ermöglicht die Steuerung von
Attributen über Benutzerschnittstellen
ƒ Einige Controls:
ƒ CachingControl (Steuerung des Downloadfortschritts)
ƒ GainControl (Regulierung der Lautstärke)
ƒ StreamWriterControl (Limitierung der Größe des
erzeugten Stroms)
Java Media Framework - Monika Wnuk
11
02.06.2003
Präsentation von Mediendaten (1)
ƒ Präsentationsprozess wird modelliert durch
das Controller-Interface:
ƒ Controller definiert die Zustände, die ein
Medienkontrolleur (Objekt, das Medien steuert,
präsentiert und erfasst) durchlaufen muss und
bietet einen Mechanismus für die Steuerung der
Übergänge zwischen den Phasen
ƒ ControllerListener-Interface: Muss von Klasse
implementiert werden, die Events (Zustandsänderungen) vom Controller empfangen soll
ƒ 2 Medienkontrolleure (Interfaces):
ƒ Player
ƒ Processor
Java Media Framework - Monika Wnuk
12
02.06.2003
Präsentation von Mediendaten (2)
ƒ JMF Controllers:
Ein Player oder Processor pro Datenquelle !
Java Media Framework - Monika Wnuk
13
02.06.2003
Präsentation von Mediendaten (3)
ƒ Player:
ƒ Ablauf: Datenquelle liefert Eingabestrom von
Mediendaten an Player. Player verarbeitet
Eingabestrom und gibt diesen wieder.
Wiedergabegerät hängt von Mediendatentyp ab.
ƒ Player befindet sich in einem von 6 Zuständen:
Unrealized
Realizing
Realized
Prefetching
Prefetched
Started
Stopped
Java Media Framework - Monika Wnuk
14
02.06.2003
Präsentation von Mediendaten (4)
ƒ Player-Zustände:
ƒ Wird Player erzeugt ist er im unrealized-Zustand.
Player player = Manager.createPlayer(dataSource);
ƒ player.realize() – Zustand realizing: Betriebsmittel und
Anforderungen werden bestimmt
ƒ Zustand realized: Infos sind ermittelt
ƒ player.prefetch() – Zustand prefetching: Mediendaten
werden vorgeladen und Betriebsmittel zugewiesen
ƒ Zustand prefetched: bereit für Start
ƒ player.start() – Zustand started: TimeBase-Time und
MediaTime sind gemapped, Clock läuft, Präsentation
kann beginnen
Java Media Framework - Monika Wnuk
15
02.06.2003
Präsentation von Mediendaten (5)
ƒ Steuerung der Präsentation:
ƒ getControls(): liefert alle Controls eines Players
oder Processors (z.B. GainControl)
ƒ Benutzerschnittstelle:
ƒ player.getControlPanelComponent();
ƒ player.getVisualComponent();
ƒ Events des Controllers:
ƒ Change (Attributänderungen z.B. RateChangeEvent)
ƒ Transition (Zustandsänderungen des Controllers)
ƒ Closed (ControllerClosedEvents)
Java Media Framework - Monika Wnuk
16
02.06.2003
Verarbeitung von Mediendaten (1)
ƒ Processor:
ƒ Ablauf: Datenquelle liefert wie bei Player
Eingabestrom von Mediendaten an Processor.
Processor verarbeitet Mediendaten und gibt
diese an ein Präsentationsgerät (Playerfunktion)
oder an eine neue Datenquelle aus. Diese
Datenquelle dient dann einem anderen Player
oder als Eingabe für einen DataSink (->
Datenspeicherung).
ƒ Processor erlaubt dem Entwickler, die Art der
Verarbeitung zu definieren (↔ Player). Dadurch
möglich: Anwendung von Effekten, Mischen, und
Komponieren in Echtzeit.
Java Media Framework - Monika Wnuk
17
02.06.2003
Verarbeitung von Mediendaten (2)
ƒ Phasen der Verarbeitung:
Java Media Framework - Monika Wnuk
18
02.06.2003
Verarbeitung von Mediendaten (3)
ƒ Für jede Phase ein anderes JMF Plug-In:
ƒ
ƒ
ƒ
ƒ
ƒ
Demultiplexer (Extraktion der Spuren)
Effect
Codec
Multiplexer (Merging mehrerer Spuren)
Renderer (Visualisierung/ Übertragung/ Ausgabe
des Stroms)
Java Media Framework - Monika Wnuk
19
02.06.2003
Verarbeitung von Mediendaten (4)
ƒ Zusätzliche Zustände:
Configuring & Configured:
ƒ Zwischen unrealized und realizing
ƒ Configuring: Processor verbindet sich mit
Datenquelle, demultiplexed den Eingabestrom,
und greift auf Infos über das Eingabeformat zu.
ƒ Configured: Processor ist mit Datenquelle
verbunden und Datenformat ist festgelegt.
getTrackControls() kann aufgerufen werden um
für jede einzelne Spur eine TrackControl zu
erhalten (Steuerung der Verarbeitung einer Spur)
Java Media Framework - Monika Wnuk
20
02.06.2003
Verarbeitung von Mediendaten (5)
ƒ Steuerung der Verarbeitung:
ƒ TrackControl: eine TrackControl pro Spur; per
getControls() Zugriff auf Codec-Controls wie
BitRate-, QualityControl
ƒ setFormat(Format format): Formatspezifikation,
z.B.
trackControl.setFormat(format);
ƒ Ausgabe der verarbeiteten Mediendaten:
Die auszugebende Datenquelle wird wie folgt
ermittelt:
DataSource output = processor.getDataOutput();
Java Media Framework - Monika Wnuk
21
02.06.2003
Erfassung von Mediendaten
ƒ Engl: Capture
ƒ Erfassungsgeräte (Capture Devices) können
als Quelle für Multimediadaten dienen (z.B.
Mikrofon erfasst Audiodaten)
Vereinfacht: Datenquellen (DataSources)
ƒ Beispiel: Gerät, das zeitgerechte Lieferung
von Daten unterstützt, wird als
PushDataSource gehandelt (z.B. Webcam)
Java Media Framework - Monika Wnuk
22
02.06.2003
Daten-Speicherung und -Übertragung (1)
ƒ DataSink:
ƒ Liest Mediendaten von einer Datenquelle und
übergibt sie an ein Ziel (üblicherweise kein
Präsentationsmedium !)
ƒ DataSink kann Daten in eine Datei schreiben,
Daten über das Netzwerk schreiben, oder als
RTP-Broadcaster funktionieren.
ƒ StreamWriterControl: zusätzliche Steuerung des
Schreibens in Dateien (z.B. Einschränkung der
Zieldateigröße)
ƒ Steuerung der Speicherung durch
DataSinkEvents (z.B. EndOfStreamEvent) und
Implementierung des DataSinkListeners
Java Media Framework - Monika Wnuk
23
02.06.2003
Daten-Speicherung und -Übertragung (2)
ƒ RTP:
ƒ Real-Time Übertragungsprotokoll
ƒ Medienstreams können in Echtzeit über das
Netzwerk übertragen werden (z.B.
Videokonferenz über das Internet)
ƒ RTP als Media-on-Demand Applikation
ƒ JMF bietet für RTP 3 Packages:
ƒ javax.media.rtp
ƒ javax.media.rtp.event
ƒ javax.media.rtp.rtcp
ƒ Hauptmechanismen: Empfangen, Senden von
RTP-Streams über das Netzwerk
Java Media Framework - Monika Wnuk
24
02.06.2003
Erweiterbarkeit des JMF
ƒ JMF erweiterbar durch Implementierung von
Plug-Ins, Media Handlern, und Datenquellen
ƒ Plug-Ins: Erweiterung durch Implementierung eines der 5 Plug-In-Interfaces. Plug-Ins
werden für den Processor verfügbar durch
Registrierung mit dem PlugInManager.
PlugInManager.getPlugInList() liefert Liste
aller registrierten Plug-Ins.
ƒ Mehr Flexibilität durch Implementierung von
Media Handlern (Player, Processor,
DataSink) und DataSources
Java Media Framework - Monika Wnuk
25
02.06.2003
Aufgabe: JMF Terminal (1)
ƒ Realisierung einer JMF-Anwendung zur
synchronen Aufzeichnung und Wiedergabe
von Audio und Video.
ƒ Funktionen:
ƒ Durchgehende Wiedergabe von Audio (Mikro)
und Video (Webcam)
ƒ Aufnahme von Audio und Video
ƒ Speicherung der Aufnahme in eine Datei
ƒ Abspielen der Aufnahme
Java Media Framework - Monika Wnuk
26
02.06.2003
Aufgabe: JMF Terminal (2)
ƒ Aufbau der Programmierung:
DataSource
Audio
DataSource
Video
Cloned
DataSource
Wiedergabe
Merged
DataSource
Player
Aufnahme
Processor
Speicherung
Output
DataSink
Abspielen
Player
Java Media Framework - Monika Wnuk
DataSource
Datei
27
02.06.2003
Link: java.sun.com
http://java.sun.com/products/java-media/jmf/
ƒ Installation (JMF 2.1.1)
ƒ Dokumentation (JMF 2.1.1 API Guide)
ƒ Spezifikation
ƒ Beispiele
ƒ Lösungen
Java Media Framework - Monika Wnuk
28
02.06.2003
Weitere Links
ƒ Nady Habashy: JMF zur Entwicklung
multimedialer Anwendungen (deutsche
Übersetzung des Kapitels „Understanding
JMF des JMF Api Guides)
http://www.ubka.unikarlsruhe.de/vvv/ira/2001/11/
ƒ Link-Seite:
http://www.informatik.unimannheim.de/informatik/pi4/stud/veranstaltu
ngen/ws200102/mmprak/links.html
Java Media Framework - Monika Wnuk
29
02.06.2003
Merci für Ihre
Aufmerksamkeit !
Java Media Framework - Monika Wnuk
30
02.06.2003
Herunterladen