Java™ Media APIs zur Entwicklung multimedialer

Werbung
Hauptseminar Softwaretechnik
„Neue Java-Technologien 2“
Java™ Media APIs zur Entwicklung
multimedialer Anwendungen
mit Java
Ingo Novy
([email protected])
Betreuer: Falk Fünfstück
([email protected])
Gliederung
•
•
•
•
•
•
•
•
Einleitung
JMF – Java™ Media Framework API
Java™ Sound API
Java 2D™ API
Java 3D™ API
Zusammenfassung
Quellen
Diskussion
01.02.2001
Hauptseminar Softwaretechnik: Java™ Media APIs
2
1. Einleitung
Zu Vorteilen von Java:
–
–
–
–
–
Mächtigkeit
Objektorientiertheit
Tool-Unterstützung
Bekanntheit
Masse an verfügbaren APIs
Kommt Multimediafähigkeit hinzu
Å Java™ Media APIs
01.02.2001
Hauptseminar Softwaretechnik: Java™ Media APIs
3
Weitere JavaTM Media APIs
• JavaTM Advanced Imaging API
– Java 2D™ erweiternde Grafik- und
Bildbearbeitungsoperationen
– Z.B. Kontrasterhöhung, Skalierung
• JavaTM Shared Data Toolkit
– Unterstützung von mehrfach nutzbaren Daten
– Z.B. Sound Server, Internet Telephonie
• JavaTM Speech API
– Sprachsynthese und -erkennung
• Weitere...
01.02.2001
Hauptseminar Softwaretechnik: Java™ Media APIs
4
Java Media Technologie
01.02.2001
Hauptseminar Softwaretechnik: Java™ Media APIs
5
2. JMF (1)
• „Java™ Media Framework API“
• API um zeitgesteuerte Medien wie Audio
und Video in Java-Anwendungen und
Applets einbinden zu können
• JMF ist ein optionales Paket, welches die
Multimediafähigkeiten von J2SE™
erweitert
01.02.2001
Hauptseminar Softwaretechnik: Java™ Media APIs
6
JMF (2)
• Letzte Version ist JMF 2.1
• Mit JMF kann man:
–
–
–
–
Aufnehmen
Wiedergeben
Senden/Empfangen
Konvertieren
• Unterstützt die Standardformate: AIFF, AU, AVI,
MIDI, MPEG, QuickTime, WAV, etc.
• Durch Plug-in‘s erweiterbar
01.02.2001
Hauptseminar Softwaretechnik: Java™ Media APIs
7
Historie
JMF 1.0 API:
– „Java Media Player API“
– Erstmalig zeitbasierende Medien verwendbar
JMF 2.0 API:
– Aufnahme und Speicherung von Medien-Daten
zusätzlich möglich
– „Plug-in API“
Å Grundfunktionalität erweiterbar
01.02.2001
Hauptseminar Softwaretechnik: Java™ Media APIs
8
Beispiel
⇒ Siehe JMF-Demo.html und
TVApplet.java
<applet code=TVApplet.class width=500 height=500>
<param name=file value="/1.mov">
</applet>
01.02.2001
Hauptseminar Softwaretechnik: Java™ Media APIs
9
3. Java™ Sound API (1)
• „Java Sound engine“
• API stellt bereit:
– Audio-Mixer
– Audio-Aufnahme
– MIDI abspielen
• 32 Kanäle für Audio
• Unterstützt einige hochqualitative General
MIDI Sound-Bänke
01.02.2001
Hauptseminar Softwaretechnik: Java™ Media APIs
10
Java™ Sound API (2)
• Java 2 SDK, Standard Edition, v. 1.3
• Für ältere Versionen im Java Media
Framework 2.0 enthalten
• Unterstützte Formate: AIFF, AU, WAV,
MIDI, etc.
• Audio-Streaming unterstützt in Verbindung
mit JMF
01.02.2001
Hauptseminar Softwaretechnik: Java™ Media APIs
11
Packages
• javax.sound.sampled.*
• javax.sound.sampled.spi.*
• javax.sound.midi.*
• javax.sound.midi.spi.*
01.02.2001
Hauptseminar Softwaretechnik: Java™ Media APIs
12
Beispiel
⇒Siehe MySoundDemo.java
public void playSound() {
Clip clip = (Clip) currentSound;
clip.start();
while (clip.isActive()) { }
clip.stop();
clip.close();
}
01.02.2001
Hauptseminar Softwaretechnik: Java™ Media APIs
13
4. Java 2D™ (1)
• Erweitert das JDKTM 1.0.2 AWT Packet
• Teil des Java 2 SDK, Standard Edition
• Erstmalig in der Java 2 SDK Version 1.2
• Aktuell ist die Java 2 SDK in Version 1.3
Å Viele neue Java 2D Features
01.02.2001
Hauptseminar Softwaretechnik: Java™ Media APIs
14
Java 2D™ (2)
• Satz von Klassen für:
– Fortgeschrittene 2D Grafik
– (Bildbearbeitung)
– Text
• API unterstützt:
– Bilderzeugung
– Genauer Farbraumdefinitionen und -konversion
01.02.2001
Hauptseminar Softwaretechnik: Java™ Media APIs
15
Packages
• java.awt.*
– Benutzungsschnittstellen
– Darstellung von Grafik und Bildern
• java.awt.geom.*
– Strukturen wie Punkt, Gerade, Ellipse, etc.
• com.sun.image.codex.jpeg
– Enkodieren und Dekodieren von JPEG-Bildern
• Weitere...
01.02.2001
Hauptseminar Softwaretechnik: Java™ Media APIs
16
Beispiel zu Java 2D™
⇒Siehe Areas.java
GeneralPath p1 = new GeneralPath(); // [...]
p1.moveTo( 100, 0);
p1.lineTo( 200, 50); // [...]
p1.closePath(); // [...]
Area area = new Area(p1); // [...]
area.subtract(new Area(p2)); // [...]
Graphics2D g2;
g2.fill(area); // [...]
g2.draw(area);
01.02.2001
Hauptseminar Softwaretechnik: Java™ Media APIs
17
5. Java 3D™ API (1)
• Hoher Abstraktionsgrad
Å Vereinfacht 3D-Grafik-Programmierung
• Basiert auf Szenen-Graph-API
• Setzt auf DirectX oder OpenGL auf - um 3D
Hardware-Beschleunigung zu nutzen
• Import von Dateien aus:
– VRML (Virtual Reality Modeling Language)
– Lightwave3D
– 3DStudioMax
01.02.2001
Hauptseminar Softwaretechnik: Java™ Media APIs
18
Java 3D™ API (2)
• Attribute:
– Farbe
– Struktur
• Nebel
• Beleuchtung:
– Umgebend
– Gerichtet
– Punkt (inklusive Scheinwerfer)
01.02.2001
Hauptseminar Softwaretechnik: Java™ Media APIs
19
Möglichkeiten
•
•
•
•
•
Animation und Bewegung
Kollisionserkennung
Interpolation
(Morphing)
Begrenzende Regionen
01.02.2001
Hauptseminar Softwaretechnik: Java™ Media APIs
20
Ein- und Ausgabegeräte
• Unterstützte Eingabegeräte:
–
–
–
–
Tastatur
Maus
Joystick
Datenhandschuh, etc.
• Unterstützte Anzeigegeräte:
–
–
–
–
Monitor
3D-Schirm
Videowand
Monitorkäfig, etc.
01.02.2001
Hauptseminar Softwaretechnik: Java™ Media APIs
21
Szenen Graph Hierarchie
• Liste von Locale-Objects
• Typisch nur eins je Anwendung
• Mehrere möglich, min. eine
• Container für Collection von
Sub-Graphen
• Eindeutige Position innerhalb
des Universums
Manipulieren des SceneGraph während Laufzeit
Spezifiziert alle
geometrischen Objekte
01.02.2001
• Knoten eines Sub-Graphen
• „compile unit“
• Eine räumliche Transformation:
• Position
• Orientierung
• Renderinformationen
• Skalierung
• Min. eine
• Mehrere gleichzeitig
• „Wo“ und „welche Richtung“ wird unterstützt
Hauptseminar Softwaretechnik: Java™ Media APIs
22
Scene Graph Example
01.02.2001
Hauptseminar Softwaretechnik: Java™ Media APIs
23
Performance?
• Gut! Gründe:
– Hoher Grad der Abstraktion verändert
• „Wie viel“
• „Was“
berechnet werden muss
– Sehr gut skalierbar
– Kann auf z.B. Direct3D oder OpenGL
aufsetzen
01.02.2001
Hauptseminar Softwaretechnik: Java™ Media APIs
24
Beispiel
⇒Siehe HelloUniverse.java
01.02.2001
Hauptseminar Softwaretechnik: Java™ Media APIs
25
Szenen Graph Hierarchie
01.02.2001
Hauptseminar Softwaretechnik: Java™ Media APIs
26
6. Zusammenfassung
•
•
•
•
•
•
Nützliche APIs
Relativ einfach zu benutzen
Vorteile von Java im allgemeinen gelten...
Wünschenswert: IDE für Media APIs
Besondere Eignung z.B. für Simulationen
Bei reinen Präsentationen
Å Autorenwerkzeuge besser geeignet (derzeit)
01.02.2001
Hauptseminar Softwaretechnik: Java™ Media APIs
27
7. Quellen
•
Allgemeine Links
–
–
•
http://java.sun.com/products/java-media/
http://www.cetus-links.org/oo_java_libraries.html
Java 2D™ API
–
•
http://java.sun.com/products/javamedia/2D/forDevelopers/java2dfaq.html
Java 3D™ API
–
„Java 3DTM API Specification“; Sowizral, Rushforth, Deering;
Addison-Wesley
–
http://java.sun.com/products/java-media/3D/collateral/
Å Java 3DTM API Einführung
–
http://java.sun.com/products/java-media/3D/demos/
Å Beispielimplementierungen
01.02.2001
Hauptseminar Softwaretechnik: Java™ Media APIs
28
8. Diskussion
01.02.2001
Hauptseminar Softwaretechnik: Java™ Media APIs
29
Herunterladen