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