The JavaTM Media Framework (JMF) is an application programming interface (API) for incorporating time-based media into Java applications and applets. This guide is intended for Java programmers who want to incorporate time-based media into their applications and for technology providers who are interested in extending JMF and providing JMF plug-ins to support additional media types and perform custom processing and rendering.

About JMF

The JMF 1.0 API (the Java Media Player API) enabled programmers to develop Java programs that presented time-based media. The JMF 2.0 API extends the framework to provide support for capturing and storing media data, controlling the type of processing that is performed during playback, and performing custom processing on media data streams. In addition, JMF 2.0 defines a plug-in API that enables advanced developers and technology providers to more easily customize and extend JMF functionality.

The following classes and interfaces are new in JMF 2.0:
AudioFormat BitRateControl Buffer
BufferControl BufferToImage BufferTransferHandler
CaptureDevice CaptureDeviceInfo CaptureDeviceManager
CloneableDataSource Codec ConfigureCompleteEvent
ConnnectionErrorEvent DataSink DataSinkErrorEvent
DataSinkEvent DataSinkListener Demultiplexer
Effect EndOfStreamEvent FileTypeDescriptor
Format FormatChangeEvent FormatControl
FrameGrabbingControl FramePositioningControl FrameProcessingControl
FrameRateControl H261Control H261Format
H263Control H263Format ImageToBuffer
IndexedColorFormat InputSourceStream KeyFrameControl
MonitorControl MpegAudioControl Multiplexer
NoStorageSpaceErrorEvent PacketSizeControl PlugIn
PlugInManager PortControl Processor
ProcessorModel PullBufferDataSource PullBufferStream
PushBufferDataSource PushBufferStream QualityControl
Renderer RGBFormat SilenceSuppressionControl
StreamWriterControl Track TrackControl
VideoFormat VideoRenderer YUVFormat

In addition, the MediaPlayer Java Bean has been included with the JMF API in MediaPlayer can be instantiated directly and used to present one or more media streams.

Future versions of the JMF API will provide additional functionality and enhancements while maintaining compatibility with the current API.

Design Goals for the JMF API

JMF 2.0 supports media capture and addresses the needs of application developers who want additional control over media processing and rendering. It also provides a plug-in architecture that provides direct access to media data and enables JMF to be more easily customized and extended. JMF 2.0 is designed to:

About the JMF RTP APIs

The classes in,, and provide support for RTP (Real-Time Transport Protocol). RTP enables the transmission and reception of real-time media streams across the network. RTP can be used for media-on-demand applications as well as interactive services such as Internet telephony.

JMF-compliant implementations are not required to support the RTP APIs in,, and The reference implementations of JMF provided by Sun Microsystems, Inc. and IBM Corporation fully support these APIs.

The first version of the JMF RTP APIs (referred to as the RTP Session Manager API) enabled developers to receive RTP streams and play them using JMF. In JMF 2.0, the RTP APIs also support the transmission of RTP streams.

The following RTP classes and interfaces are new in JMF 2.0:
SendStream SendStreamListener InactiveSendStreamEvent
ActiveSendStreamEvent SendPayloadChangeEvent NewSendStreamEvent
GlobalTransmissionStats TransmissionStats

The RTP packages have been reorganized and some classes, interfaces, and methods have been renamed to make the API easier to use. The package reorganization consists of the following changes:

The name changes consist primarily of the removal of the RTP and RTCP prefixes from class and interface names and the elimination of non-standard abbreviations. For example, RTPRecvStreamListener has been renamed to ReceiveStreamListener. For a complete list of the changes made to the RTP packages, see the JMF 2.0 Beta release notes.

In addition, changes were made to the RTP APIs to make them compatible with other changes in JMF 2.0:

Design Goals for the JMF RTP APIs

The RTP APIs in JMF 2.0 support the reception and transmission of RTP streams and address the needs of application developers who want to use RTP to implement media streaming and conferencing applications. These APIs are designed to:

Partners in the Development of the JMF API

The JMF 2.0 API is being jointly designed by Sun Microsystems, Inc. and IBM Corporation.

The JMF 1.0 API was jointly developed by Sun Microsystems Inc., Intel Corporation, and Silicon Graphics, Inc.

Contact Information

For the latest information about JMF, visit the Sun Microsystems, Inc. website at:

Additional information about JMF can be found on the IBM Corporation website at:

About this Document

This document describes the architecture and use of the JMF 2.0 API. It replaces the Java Media Player Guide distributed in conjunction with the JMF 1.0 releases.

Except where noted, the information in this book is not implementation specific. For examples specific to the JMF reference implementation developed by Sun Microsystems and IBM corporation, see the sample code and solutions available from Sun's JMF website (

Guide to Contents

This document is split into two parts:

Part 1 is organized into six chapters:

Part 2 is organized into six chapters:

At the end of this document, you'll find Appendices that contain complete sample code for some of the examples used in these chapters and a glossary of JMF-specific terms.

Change History

Version JMF 2.0 FCS
Version 0.9

Internal Review Draft

Version 0.8

JMF 2.0 Beta draft:

Version 0.7

JMF 2.0 Early Access Release 1 draft:

Version 0.6

Internal Review Draft

Version 0.5

JMF 2.0 API public review draft.

Version 0.4

JMF 2.0 API licensee review draft.


Please submit any comments or suggestions you have for improving this document to


Copyright © 1998-1999 Sun Microsystems, Inc. All Rights Reserved.