Quicktime for Java als Alternative zum

peyote Informationsdesign Ges.m.b.H.

DI Christian Liska mailto:[email protected] Quicktime (1)

' Apple: „At its simplest, QT is software that allows you to play back media on your computer. But it is also a whole lot more...“

' File Format

' Suite of Applications

' Quicktime Player

' Quicktime Plugin

' Quicktime Pro Quicktime (2)

' Plattform for Media

' Audio/Video capturing

' authoring content

' adding interactivity to static media

' ... API JavaMediaFw.

' Sun: „... enables audio, video and other time-based media to be added to Java applications and applets.“

' capturing, playback(ing), streaming, transcoding multiple media formats

' ... API, which extends the multimedia capabilities of J2SE. QT vs. JMF (1)

' Quicktime ' JMF

' standalone ' integrated in Java Media APIs ' Platforms:

' ' Windows Platforms:

' Apple ' Solaris

'

' Windows

' Cross PF QT vs. JMF (2)

' native ' pure Java with implementation nat. performance packs ' no source code

' source code ' docu online available (SCSL)

' complete docu. online/download QT vs. JMF (2)

' native ' pure Java with implementation nat. performance packs ' no source code

' source code ' docu online or buy a book available (SCSL) ' complete docu. online/download Mediatypes (1)

' Quicktime ' JMF IMAGES

' all types ' no image types by (BMP, GIF, default JPG,TIFF,PNG ...)

' Photoshop (with multiple layers) Mediatypes (2)

' Quicktime ' JMF VIDEO

' AVI, MPEG-1, MOV ' AVI, MPEG-1, MOV Quicktime JMF Animation j - Apple BMP j - j - j j Component V j - DV NTSC j - DV PAL j - H.261 j j H.263 j j MS OLE j - MS Video 1 j - Motion Jpg A j j Motion Jpg B j j Photo Jpg j - Planar RGB j j Sorenson V1/2 j - Mediatypes (3)

' Quicktime ' JMF Audio

' AIFF, AU, Karaoke, ' AIFF, AU, MIDI MIDI, MP3 (1, 3), (1,2), MP2 (1,2), M3U, SF2, Sound, MP3 (1,2,3), Wave Wave Mediatypes (4)

' Quicktime ' JMF „Multimedia“

' Macromed. Flash 4 ' Macromed. Flash 2

' VR Mediatypes (5)

' Quicktime ' JMF Exporter

QT-Export JMF-Export AIFF j j AU j j AVI j j BMP j - DV-Stream j - Jpeg j - MIDI j - Photoshop j - PICT j - PNG j - QT-Img j - QT-MOV j j SGI j j j - TIFF j - Mediatypes (6)

' Quicktime ' JMF Capture Devices

' all devices ' support under supported by QT- Solaris and Pro Windows

' Webcams (QuickCam VC, Creative WebCam)

' Solaris: SunVideo+ Quicktime API (1)

' „programming“ multimedia

' written in native C st ' QT-Java-API 1 demonstrated at Java One 1998 java.* .* JNI

java-lib quicktime-lib OS Mac Win Quicktime API (2)

' API to directly acccess QT native runtime - quicktime.std.*

' set of packages that forms the basis of Application Framework (focus on presenting different kinds of media) - quicktime.app.* Quicktime API (3)

' services

' creation of objects for different forms of media - QTFactory.makeDrawable();

' utils for dealing with single images

' composition services for layering and blending

' timing services

' video/audio capturing from external sources

' visual effects architecture Demo:QTSimpleApplet

public class QTSimpleApplet extends Applet { ... public void init() { try { QTSession.open(); setLayout(new BorderLayout()); mQTCanvas = new QTCanvas(...); add(mQTCanvas, „Center“);

QTFile f = new QTFile(...); mQTDrawble = QTFactory.makeDrawable(f); } catch(Exception e) { //... } }

public void start() { mQTCanvas.setClient(mQTDrawable,true); }

public void stop() { mQTCanvas.removeClient(); } Demo:JscriptApplet

' controlling a movie within a browser using JavaScript public void start () { ...canvas and file as before OpenMovieFile movieFile = OpenMovieFile.asRead(qtf); Movie myMovie = Movie.fromFile(movieFile); myPlayer = new MoviePlayer(myMovie); myCanvas.setClient(myPlayer, true); }

public void resetTime(int time) { myPlayer.setRate(0); myPlayer.setTime(time); }

public void pause() { myPlayer.setRate((myPlayer.getRate() == 0 ? 1 : 0)); } QTCanvas

' specialized Canvas that supplies access to the native graphics environment

' instance of QTCanvas can display any object that implements the Drawable interface

' setClient() associates a new client with the QTCanvas QTDrawable

' encapsulates common operations that can be applied to a QT drawing object

' expresses the required methods that QTCanvas needs to draw its client

' QT-objects that implement QTDrawable:

' QTPlayer, MoviePlayer, SGDrawer, ... QTFactory

' provides factory methods for creating classes used to present media that QT can import

' QTFactory.makeDrawable(): type object ' file movies QTPlayer images GraphicsImporterDrawer ' HTTP sound QTPlayer ' FTP MIDI QTPlayer ...... ' RTP etc, etc, ...

' Fullscreen-support FullScreenWindow w = new FullScreenWindow( new FullScreen(), myPlayMovie); ... QTCanvas c = new QTCanvas(...); w.add(c); c.setCanvas(moviePlayer, false);

' QTEffect forms base class for vis. eff. (bluring, detecting edges, ...)

' full support of Quicktime-VR

' etc, ... peyote – Kiosk

' framework / system to present multimedial content

' integration of 2d and 3d

' intuitive UI

' contact-free content controlling Implementation

' based on Java3D and JMF

' large videos -> problems with performance and playback

' customers need variety of media types

' migration to QT / integration of QT

' design of player plugin technology

' definition of kiosk interface classes

' plugin via abstraction layer

' first plugin „only“ for videos and sound

' prepared for integration of QT-VR, Flash-4 Demo

euroshop'02

CeBIT'02 Thanks

' contact:

' http://www.peyote.cc

' mailto:[email protected]

' peyote Informationsdesign Ges.m.b.H. Mariahilferstrasse 51 1060 Wien

' phone: +43(1)5850537