Audio's Future in the Java Language
The Java Media Framework, a unified way of interacting with many types of media, is being defined within JavaSoft. This framework provides an application programming interface (API) for utilizing audio and video sources from within an application/applet. The Java Media Framework (JMF) allows a programmer to schedule and to synchronize time-based media from diverse sources within a single computing session. Media sources are identified by a Universal Resource Locator (URL), and except for latency issues, there is no distinction between local files and network-based streams of audio or video.
The JMF can be used without having to understand synchronization and control issues. To make it easy to render media on a local desktop, the JMF defines a small set of classes for use by the casual applet or application programmer. With only a few method calls and a URL, a programmer can instantiate a "Player" for the media type specified by the URL. A Player consists of an API (such as start, stop, or seek) and a graphical user interface. This Player allows for control of the media stream without the need for an end-user programmer to understand the Player's internal architecture or the data structures that underlie popular media formats. By hiding these details and tightly integrating with the rest of the Java environment, the JMF also allows for the construction of Players for self-describing media content.
For those who wish to have greater control over the media streams, existing Players can be enhanced, and new Players can be created. As collections of classes and interfaces, custom elements can be added to current Players, and new Players can be created for media formats that existing Players cannot recognize. Third parties can construct this new set of Players from locally available components or on the network. The structure for fitting new components into the JMF is provided by Java's existing notions of protocol and content handling.
The JMF enables the easy construction of many types of cross-platform, media-rich applications such as media display on the WWW, video-on-demand clients, video conferencing, media authoring, and arcade-style games. Given the expansion capabilities of the JMF, numerous types of applications could be developed.
Audio in the Java Media Framework
The JMF is designed to support a variety of audio file and data formats while remaining open to arbitrary new audio formats. The following file formats are supported in the core library: NeXT/Sun, RIFF-WAV, AIFF, QuickTime, and AVI. The following network protocols are supported in the core library for media transmission: HTTP, FILE, and RTP. The ability to render standard MIDI data is similarly supported.
In conjunction with the Java 3D API, support for audio spatialization and 3D audio rendering interfaces is being planned. Speech synthesis and recognition APIs are in the early review stage. Telephony APIs are being developed in conjunction with the major telephony vendors and research organizations, which take advantage of the JMF infrastructure.