Java Media Framework Multimedia mit Java Giuseppe Lisa Inhalt • • • • • • Was ist Multimedia? Konzept von Java Aufbau von JMF JMF RTP Java Sound Beispiele Was ist Multimedia? • Der Begriff Multimedia schon in den 50er und 60er Jahren populär dank dem Einsatz bei Diasvorträgen von neuartigen Überblendtechniken und Ton. • Unter Multimedia versteht man das Einbeziehen von Ton, Graphiken, Film, Texte und Interaktivitäten in einer Präsentation oder in Lernprogramme. Konzept von Java • JMF (Java Media Framework) • wurde von Sun und IBM entwickelt • ist eine Schnittstelle (API), um in Javaprogramme zeitbasierende Mediadateien (Musik,...) einzubinden • „write once, run anywhere“ • „high-level“ Architektur Entwicklung von JMF •Version 1.0 • Präsentation von Mediadateien in Javaprogramme •Version 2.0 • erfassen und speichern von Dateien • Kontrolle der Prozessart bei der Wiedergabe • Verarbeitung von Mediadateien • hinzufügen von Plug-in‘s, um neue Funktionen hinzuzufügen • zusätzlich ein MediaPlayer, ein Java Bean • ermöglicht die Entwicklung von media Streaming und Konferenzanwendungen • Zugang zu raw-Dateien (siehe Real-Player) •Version 2.1 (seit April 2001) • verbessert und RTP (Real-Time Transfer Protocol) Funktionen hinzugefügt Input Verarbeitung Ausgang • erfassen • Effekte hinzufügen • Präsentation • von einer Datei lesen • komprimieren dekomprimieren • Speichern • vom Netzwerk • konvertieren • Ins Netzwerk senden Interface Clock • Präzision von Nanosekunden • Schnittstelle, definiert zeitliche und synchronisierende Grundoperationen bei der Wiedergabe • zeitliche Position bei der Wiedergabe wird bestimmt durch: • TimeBase • MediaTime • Wiedergabe-Rate Das Zeitmodel Event Model • Jedes JMF Programm gibt bei einem Ereignis, z.B. Dateiende, ein MediaEvent zurück • MediaEvent ist in verschiedenen Klassen unterteilt • nach dem Eventmuster der Java Beans Class DataSource • Beinhaltet sowohl der Ort, als auch das Protokoll, als auch die Software, um Dateien überzubringen • wird mit MediaLocator oder URL identifizert Class DataSource • Zwei Arten von SourceStream: – standart data source: byte array als Transfereinheit – buffer data source: Buffer als Transfereinheit • Zwei Arten von DataSource: – pull data source: der Client fängt mit dem Datentransfer an (Bsp.:http, FILE) – push data source: der Server sendet und kontrolliert Datentransfer (Bsp.: RTP) Class DataSource • Man kann DataSources klonen oder verschiedene Datasources zusammenmischen • Dateien werden mit dem content type referenziert • Unterstützte Formate: AIFF, AU, AVI, MIDI, MPEG, QuickTime, RMF und WAV Class Manager •Arbeiten zwischen den Strukturen von JMF •Es gibt 4 Klassen: • Manager: zuständig für die Konstruktion von Players, Processors, DataSources und DataSinks • PackageManager: verwaltet eine Datenbank mit vordefinierten Players, Processors, DataSources und DataSinks • CaptureDeviceManager: verwaltet eine Datenbank von allen verfügbaren Einlesegeräten • PlugInManager: verwaltet eine Datenbank von allen verfügbaren Plug-In`s Class Manager ... String mediaFile = getParameter("FILE"); try{ URL mediaURL = new URL(getDocumentBase(),mediaFile); player = Manager.createPlayer(mediaURL); ... }{catch(Exception e)} {System.err.println("Got Exception "+e);} ... Class Format • Definiert exakt den Format der Datei Interface Control • Ermöglicht das Abfragen und Setzen von Attributen • stellt oft Benutzerschnittstellen zu Verfügung • Einige Controls: – – – – CachingControl GainControl FrameRateControl usw. Interface Controller • Definiert grundlegende Stadien und Kontrollmechanismen eines Objektes, das Mediadateien ausgibt. • Definiert die verschiedenen Stadien beim Aufbau eines Media Controller • ein Controller gibt Events über die verschiedenen Stadien Interface Player Datasource Player Aufbau eines Players Unrealized deallocate realize Realizing RealizeCompleteEvent Realized deallocate setMediaTime prefetch Prefetching PrefetchCompleteEvent Prefetched stopped started StopEvent Started Interface Processor Spur 1 Datasource Spur 2 Effect Plug-in Codec Effect Plug-in Datasource JMF RTP • Ermöglicht Wiedergabe und Senden von Streams mit dem RTP (Real-Time Transfer Protocol) • Beispiele: Telefonbeantworter, Videokonferenzen, ... Interface SessionManager • Koordiniert eine RTP Session • registriert alle Teilnehmer einer Session und die Streams • Jeder Teilnehmer hat einen eigenen SessionManager • ermöglicht einer Applikation sich für eine Session vorzubereiten und daran teilzunehmen • kann individuelle Streams löschen oder die Session beenden JFM RTP Netzwerk SessionManager DataSource DataSource DataSource Processor Player DataSink DataSource Konsole File DataSink File DataSource Processor DataSource SessionManager Netzwerk JavaSound • Ist in JDK 2 Version 1.3 integriert • Applets und Anwendungen mit Sound versehen • ist für Programme gedacht, die sich mit Sound befassen (z.B. Synthesizer) oder genaue Kontrolle über Wiedergabe wünschen Fazit • leicht zu erlernen • mit wenigen Schritte kann man eine Mediadatei ausgeben • bei schlechter Programmierung kann der Computer abstürzen