FAQs

JMF Home Page


 



This collection of frequently asked questions (FAQ) provides brief answers to many common questions about the Java Media Framework API (JMF).

General Questions

JMF 2.1.1 Questions

JMF 2.1.1 RTP/RTSP

JMF 2.1.1 Troubleshooting Index

General Questions and Answers

Q: What is the Java Media Framework API (JMF)?

The Java Media Framework API (JMF) specifies a simple, unified architecture to synchronize and control audio, video and other time-based data within Java applications and applets.

For the purposes of this FAQ, "JMF" or "JMF API" refers to both the specification (as generated from javadoc) and the reference implementations that Sun provides with the specification.

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

The JMF 2.0 API specifies playback, capture, transmission and transcode behavior, and was developed Sun Microsystems, Inc., and IBM; both companies worked jointly on the JMF 2.0 refererence implementation.

Q: What is JMF 1.0?

The JMF API is being developed in stages. JMF 1.0, also known as the "Java Media Player", is the first release of the JMF API and concentrates on media "playback", that is the synchronization, control, processing, and presentation of compressed streaming and stored time-based media, such as audio, video and MIDI.

Sun released two reference implementations of JMF 1.0 for Windows and Solaris.

Q: What is JMF 1.1?

This is a dot release which added two version of JMF written entirely in the Java programming language, allowing JMF to be used on all JDK 1.1 Java Compatible systems.

Note this is not a new API release; the same JMF 1.0 API was used for both JMF 1.0 and 1.1 implementations from Sun Microsystems, Inc.

Q: What is JMF 2.0?

JMF 2.0 is the second release of the JMF API. Where JMF 1.0 and 1.1 provide a versatile player for time-based media, JMF 2.0 features media capture, streaming, transcoding, a pluggable codec architecture, and greater control over media data so that developers can make greater customizations and optimizations.

Sun and IBM worked together to define the API and release three sample implementations of JMF 2.0: one written entirely in the Java programming language, and optimized versions for Solaris/SPARC and Windows.

Q: What is JMF 2.1?

This is a dot release which added SunRay and Linux support, increased support with open standard RTP-based video servers such as Apple's Quicktime Streaming Server and Sun's MCSS, and many bug fixes and optimizations.

Note this is not a new API release; the same JMF 2.0 API was used for both JMF 2.0 and 2.1 implementations from Sun Microsystems, Inc.

Q: What is JMF 2.1.1?

This is dot dot release contains new features and optimizations, including:

  • Improved RTP API
  • Support for H.263/1998 (RFC 2429) - now can interoperate with Darwin based RTSP servers.
  • Direct Audio Renderer and Capturer
  • Performance enhancements with new Java compilers
  • JMF Customizer added to all JMF versions
  • HTTPS, JAWT, UNC pathnames support
  • Numerous bug fixes and optimizations

Note the JMF 2.0 API was updated slightly to include improved RTP interfaces, but remains backward compatible with the old API. It is still known as the JMF 2.0 API, but is dated 10-March-2001. The JMF 2.1.1 reference implementation is based on this new API.

Q: How can I provide feedback on the JMF 2.0 API?

Click here to send feedback

This one-way email drop goes directly to the JMF API designers.

Note the JMF 2.0 API is frozen. Feedback is still welcomed, and will be considered for future JMF API specificiations.

Q: How do I get JMF Source Code?

JMF source is made available under the Sun Community Source Licensing (SCSL) program; the following summarizes how it can be used.

For non-commercial use:

SCSL allows for the release of source code for non-commercial, evaluation and/or research use. SCSL creates a community of widely available software source code just as does the Open Source model, but with two significant differences requested by our licensees, as follows:

  • Compatibility among deployed versions of the software is required and enforced through testing
  • Proprietary modifications and extensions including performance improvements are allowed

If a customer wants to then release a commercial product using JMF source code, a SCSL Commercial Use Attachment must be executed with Sun (see below).

For commercial or internal deployment use:

If a customer wants to license JMF source code for a commercial product, a Commercial Use Attachment to the SCSL must be executed with Sun. This license will require the customer license the JMF Base Porting Kit (BPK), which includes the JMF Technology Compatibility Kit (TCK). The customer must agree to pass all of the TCK tests for JMF before shipping.

The BPK includes:

  • Access to the Test Compatibility Kit (TCK)
  • Interim code drops
  • Java Partner web site access

Q: Where is the JMF home page?

JMF software and documentation can be downloaded from its home page here

Q: Where can I ask questions about JMF?

This general purpose, public email forum allows JMF developers to answer questions and help other developers understand JMF.

Q: How do I report JMF bugs?

Report JMF Bugs

This one-way email drop goes directly to the JMF developers. Please include as much information about the bug you found in your report, including

  • JMF version (e.g. JMF 1.1 or JMF 2.1.1)
  • JDK version (e.g. JDK 1.1.6 or J2SE ver 1.3)
  • Platform you are running on (e.g. Win 98 or Solaris 2.6)
  • Hardware info (e.g. PII, 266 Mhz, 64 MB RAM, Rave 500 sound card)
  • Any exception stack trace, if one was generated
  • The media URL is available, or (if under 2 MB) the actual media data which caused the problem

Remote debugging of problems can be very tricky, so any information you can send will be helpful.

Q: Are there any books about JMF?

Yes. Here are the ones we know about.

Java - How to Program, 4th ed. (Covers JMF 2.0 and Java Sound)

by Deitel & Deitel
Published by Prentice Hall
ISBN 0-13-034151-7

Core Java Media Framework (Covers JMF 1.0)

by Linden deCarmo
Published by Prentice Hall
ISBN 0130115193

Essential JMF: Java Media Framework (Covers JMF 1.0)

by Gordon and Talley
Published by Prentice Hall
ISBN 0130801046

Programming with the Java Media Framework (Covers JMF 1.0)

by Sullivan, Winzeler, Deagen, and Brown
Published by John Wiley and Sons
ISBN 0471251690

If you know of a book that is not on this list, please let us know so we can add it. Fill out the JMF Feedback form

Q: How is the Java Sound API related to JMF?

JMF uses the Java Sound API for sound rendering. This API will become a core API in J2SE 1.3. It is also be bundled with JMF, which allows its superior sound functionality to be accessed on the JDK 1.1.x platform.

More information about the Java Sound API can be found here

JMF 2.1.1 Questions and Answers

Q: Where can I find JMF 2.1.1?

JMF 2.1.1 can be downloaded from here

Q: How is JMF 2.1.1 different from JMF 1.1?

The JMF 1.1 API software concentrates on the playback of media, and reference implementations were released on Java, Windows and Solaris/SPARC platforms.

The JMF 2.1.1 API software adds support for capture, transmission (streaming), and transcoding (changing from one media format to another), along with new codecs and a new plugin architecture which makes it easy to integrate new codecs and effects into the framework. It is also released on Java, Windows and Solaris/SPARC platforms, and is also available on Linux from Blackdown.org.

Q: What media types does JMF 2.1.1 support?

JMF 2.1.1 supports a wide array of media types, including

  • protocols: FILE, HTTP, FTP, RTP
  • audio: AIFF, AU, AVI, GSM, MIDI, MP2, MP3*, QT, RMF, WAV
  • video: AVI, MPEG-1, QT, H.261, H.263
  • other: HotMedia

*MP3 is supported only on the Windows platform.

For a complete set of formats, check out: link

Q: Can I play CD's or DVD's with JMF 2.1.1?

No. JMF 2.1.1 does not support playback of audio CDs or DVDs.

There is an unsupported way to play audio CDs using the Windows Performance Pack version of JMF 2.1.1! Assuming your CD-ROM drive is mapped to E:, you can use the URL "file:/E:/Track01.cda", etc., to play the CD track.

Q: Can I play a movie in an applet with JMF 2.1.1?

Yes. You can use the SimplePlayerApplet that is included in the jmf.jar file or write your own. See SimplePlayerApplet.

Q: Will JMF 2.1.1 support streaming?

Yes. JMF 2.1.1 provides RTP/RTSP streaming support.

JMF 2.1.1 also provides HTTP and FTP streaming support on the client side.

Q: Can I extend JMF 2.1.1 to use my own codecs?

Yes. JMF 2.1.1 has a new plugin architecture which allows you to add new codecs and effects to the framework.

You can also create your own custom datasources and players to parse and render new media types which are not bundled with JMF 2.1.1

More information about this can be found in the JMF Programmer's Guide, available on the JMF web site here

Q: Can I capture audio and video with JMF 2.1.1?

Yes. JMF 2.1.1 provides capture functionality so you can capture from a recorded or live media source. On Solaris, SunVideo and SunVideo Plus cards are supported. On Windows, most video capture devices that have a VFW driver are supported. For a list of tested video capture devices, check out: link

Video capture is not supported in the pure Java versions of JMF 2.1.1, since video capture is not available as a core functionality in the JDK. Audio capture is supported only on J2SE 1.3, where audio capture was introduced with the inclusion of the Java Sound API in J2SE 1.3.

Note, the Java Sound API allows low-level sound capture; JMF 2.1.1 uses this API for sound rendering, and bundles Java Sound with its own download. This means you can use Java Sound to capture sound, without having to use JMF 2.1.1 at all.

For more information on the Java Sound API, check out link

Q: What platforms does JMF 2.1.1 run on?

JMF 2.1.1 will run on Windows 95/98/NT 4.0/2000, Solaris/SPARC, and any Java Compatible platforms. The pure Java version of JMF 2.1.1 will now run on Apple's MRJ 2.1.4; however there are a/v syncronization problems since Apple added a 6 second audio buffer to that MRJ.

Q: What versions of the JDK does JMF 2.1.1 run on?

JMF 2.1.1 runs on Java Compatible platforms running JDK 1.1 or greater. For complete Y2K compliance, you should use JDK 1.1.6 or greater.

Q: Can I run JMF 2.1.1 in a browser?

Yes. JMF 2.1.1 runs on Java Compatible platforms running JDK 1.1.6 and above.

You can use JMF with:

  • HotJava Browser 1.1
  • Netscape Communicator 4.03-4.05 with the JDK 1.1 patch
  • Netscape Communicator 4.06 or later
  • Microsoft Internet Explorer 4.01 or later

Q: What RTP/RTSP streaming servers work with JMF 2.1.1?

JMF 2.1.1 has been tested and is interoperable with the following tools and applications:

Q: Is JMF 2.1.1 Y2K compliant?

Yes. Note you will have to run it on a Y2K certified JVM, such as JDK 1.1.6 or greater.

Q: What is JMStudio?

JMStudio is a sample application that ships as a part of the JMF 2.1.1 bundle. It is contained in the jmf.jar file and can be run with the command "java JMStudio". This GUI-based tool provides playback, capture, transmit and transcode functionalities.

Q: What is JMF Registry?

JMF 2.1.1 maintains a registry of available plugins, package prefixes and other settings in a file called jmf.properties. This is a binary file and should only be modified using the provided JMFRegistry application. This application is a part of the JMF 2.1.1 jmf.jar file and can be run as "java JMFRegistry". It requires that you have Swing-1.1 in your CLASSPATH (or you can use JDK 1.2 or later).

Q: What is JMF Diagnostics?

On the JMF web site, there is a diagnostics page with an embedded JMF applet which will check to see if you have JMF installed correctly on your system. Check out: link

Q: How do I turn off HTTP/FTP caching?

By default http and ftp sources are cached to local disk during playback. To disable caching for these sources, you can use this call:

Manager.setHint(Manager.CACHING, new Boolean(false));

Turning off caching can result in poor performance, unless you have a fast connection to the internet (or intranet) and the file is streamable. Files with single tracks (audio-only or video-only) will play fine without caching provided the data consumption rate is not faster than the download rate.

The above hint is effective only if it is set before the player is created and realized. Setting it after playback has started may not have any effect.

Q: Are there any security issues running JMF applets with Java 2?

If JMF is locally installed on a machine, there will be no security issues running JMF applets. If JMF is not locally installed, JMF applets may not be able to perform some functions like playing back locally stored media files or saving media files locally. Such actions are considered to be high risk and are protected by the Java 2 security manager. If a user chooses to allow that, he/she can do so by making use of a policy file. Here are a few settings that the user may want to selectively enable:

For playing media files stored locally:
    permission java.io.FilePermission "<directory to read from>/*", "read";

For all-java audio playback:
    permission java.lang.RuntimePermission "accessClassInPackage.sun.misc";
    permission java.lang.RuntimePermission "accessClassInPackage.sun.audio";

To allow JMF to modify the run-time thread priorities:
    permission java.lang.RuntimePermission "modifyThread";
    permission java.lang.RuntimePermission "modifyThreadGroup";

For loading native libraries:
    permission java.lang.RuntimePermission "loadLibrary.*";

For writing the JMF log file:
    permission java.io.FilePermission "${user.dir}${/}jmf.log", "write";

For HTTP, FTP and RTP:
    permission java.net.SocketPermission "*", "connect,accept";
    permission java.util.PropertyPermission "user.name", "read";

To allow download caching in the temporary directory:
    permission java.io.FilePermission "/tmp/*", "write";
    permission java.io.FilePermission "/tmp/*", "delete";

For audio recording:
    permission javax.sound.sampled.AudioPermission "record";

The policy file should allow these permissions only for the applet that is trusted by the user;this can be done by specifying a 'codeBase' after the 'grant' keyword in the policy file. The codeBase (essentially code source location) should point to the url containing the jar files. The user also has the option of specifying trusted entities via the 'signedBy' parameter; only code signed by the trusted entities will get the permissions. For more information, see here

Q: Can I capture audio or video from within an Applet with JMF 2.1.1?

By default (for security reasons), JMF 2.1.1 does not allow capture from an applet. The user can turn this on by using JMFRegistry.

Run "java JMFRegistry", select the UserSettings tab and check "Allow Capture From Applets". If the browser's security permits loading native libraries, then you will now be able to capture audio/video from an applet.

Q: Can I save files from within an applet in JMF 2.1.1?

By default (for security reasons), JMF 2.1.1 does not allow files to be saved from an applet. The user can turn this on by using JMFRegistry.

Run "java JMFRegistry", select the UserSettings tab and check "Allow File Writing for Applets". If the browser's security permits loading native libraries, then you will now be able to save fies from an applet.

Q: How do I capture both audio and video together?

You'll have to create DataSources for the audio and video capture devices and use the MergingDataSource (see javax.media.Manager) to merge them into one.

JMF 2.1.1 RTP/RTSP

Q: Does JMF support streaming media across the network?

Yes, JMF supports streaming media using the public standard RTP and RTSP protocols.

Q: What is RTP?

RTP is the Real-time Transport Protocol. Here is an excerpt from the RTP specification: "RTP provides end-to-end network transport functions suitable for applications transmitting real-time data, such as audio, video or simulated data, over multicast or unicast network services. RTP does not address resource reservation and does not guarantee quality-of-service for real-time services. The data transport is augmented by a control protocol (RTCP) to allow monitoring of the data delivery in a manner scalable to large multicast networks, and to provide minimal control and identification functionality. RTP and RTCP are designed to be independent of the underlying transport and network layers". For furthur information please refer to RFC 1889: RTP: A Transport Protocol for Real-Time Applications.

Q: What is RTSP?

RTSP is the Real Time Streaming Protocol. It is an application-level protocol for control over the delivery of real-time data, such as audio and video. Sources of data can include both live feed and stored clips. RTSP is the equivalent of the TV remote control for media streams. You can start and stop streams on the server side (video on demand type of applications). For furthur information please refer to RFC 2326: Real Time Streaming Protocol (RTSP).

Q: What features of RTP does JMF support?

JMF supports both transmission and reception of media over RTP for a variety of media formats. For a list of the default formats supported, check: link

It also fully supports RTCP. Besides, JMF implements the "RTP Profile for Audio and Video Conferences with Minamal Control", RTP/AVP.

The front end GUI application, JMStudio can be used as a standalone application to transmit and receive RTP streams. To implement custom RTP applications using JMF as a framework, check out the RTP samples on the solutions page: link

Q: What features of RTSP does JMF support?

JMF supports RTSP on the client side for reception and playback. The RTSP protocol stack is built into the player which can be accessed through the Manager.createPlayer() interface with an RTSP media locator.

JMF interoperates with other standard-based RTSP servers. For a detail list, check the RTSP support page: link

Q: What RTP streaming servers work with JMF 2.1.1?

JMF 2.1.1 has been tested and is interoperable with the following tools and applications:

Q: Does JMF support server-side RTSP?

Currently the JMF/RTSP stack can only be accessed through the Manager.createPlayer() interface which supports the playback case only. There is no public interface that would be necessary for a server to communicate with the RTSP stack.

Q: Can I develop conferencing applications (video conferencing, audio chat room etc.) using JMF?

JMF does provide the basic building blocks for a conferencing application to transmit and receive media over RTP. It is posisible to build fully- featured standard-based conferencing solutions on JMF if you combine it with conferencing protocols like H.323.

Q: Which steps are involved in building an H.323 conferencing application on JMF?

You'll need to implement your H.323 protocol stack that includes H.245 (conferencing control) and T.120 (data conferencing) to initiate conference establishment, communicate participant/endpoint information etc. Once a conference is established, you can use JMF implementation for packetization, transport and playback.

Q: Where do I begin to develop my server/client streaming application using JMF?

You can start looking at the solutions on our website here

There you'll find various sample programs that highlight different aspects of JMF. For example for RTP transmission check out AVTransmit.

Q: Which codecs should I use for low-bandwidth requirements?

For low-bandwidth video, use H.263. For audio, GSM, G.723, DVI are good choices.

Q: Can I receive from an RTP transmission and record the media to a file?

Yes. You can do it using the "Export" feature on JMStudio. To implement custom applications for writing data to a file, you can retrieve the DataSource from the ReceiveStream. Then use it to create a Processor for processing and transcoding the data. The data output from that Processor can then be use to create a file writing DataSink for saving. Check the transcode sample for more detail: link

Q: Can I send both audio and video stream in the same RTP session?

No, because the RTP specification recommends sending audio and video stream in two different sessions.

Q: What do I have to do to synchronize the audio and video streams if they are transmitted on separate RTP sessions?

JMF supports audio and video synchronization over RTP based on the model specified in the RTP spec. Each RTP data stream is matched with the corresponding RTCP stream to correctly determine the media timestamps. That is then used to synchronize the streams sent from the same user as identified by the cname (canonical name) of that user. Even when the streams are sent from different sessions (RTPManager), the streams from the same user will be synchronized as long as the streams all carry the same cname.

So from the programming point of view, if you create two sessions (RTPManager's) for audio and video, you'll need to make sure both sessions are initialized with the same cname (inside SourceDescription) in order to guarantee A/V synchronization.

Check the AVTransmit on the solutions page for more detail: link

Q: Can I unicast streams on a single host?

Yes. This is possible if the two RTPManager objects for the sending and receiving sides don't bind to the same port. You will need to set up a transmission from Port A to Port B. The first RTPManager binds to Port A and transmits from Port A to Port B on this host. The second RTPManager binds to Port B, receives RTP data on Port B and sends RTCP feedback from Port B to Port A.

You can try the Tx and Rx examples on the JMF solutions page to set-up a unicast session on a single host:

For further information, check: link

Q: Can I send/receive RTP to/from custom transport layer (e.g, ATM)?

Yes, you would need to implement RTPConnector. RTPSocketAdapter is a sample implementation of RTPConnector provided at our website. Please check it out here

Q: How do I add RTP text payload support (draft-ietf-avt-rtp-text-00.txt) to JMF?

JMF is an open architecture with pluggable components such as renderers, codecs etc. In order to add RTP-Text capabilities you would need to add a new format (payload) and provide the appropriate data packetizer and depacketizer, codec and renderer.

Q: Does JMF support RTP dynamic payload mapping?

Yes. The following interface is used to add a dynamic payload to format mapping to the RTPManager:

        public void addFormat(Format format, int payload);

The RTPManager maintains all static payload numbers and their correspnding formats as mentioned in the Audio/Video profile document. Using the PlugIn Codec interface, a user may plug in his own packetizer or depacketizer to handle RTP streams of a proprietary format using dynamic payload numbers as specified in the AV profile. Before streaming dynamic payloads, a Format object needs to be created for each of the dynamic payload types and associated with a dynamic payload number.

Q: How do I build custom RTP packetizer and depacketizer?

Please refer to JMF Solution Page for building custom RTP packetizer and depacketizer: link

Q: How can I lower the audio latency?

JavaSound uses software audio mixing which introduces long latency. If you are running the Windows or Solaris performance packs, you may use DirectAudioRenderer to lower the latency. This can be done by disabling JavaSoundRenderer using the JMFRegistry GUI application or via the PlugInManager API.

Another way to lower latency is to set smaller capture and rendering buffer sizes. Check the following sample for details:

link

Q: Does JMF provide SDP support?

Yes. SDP support in JMF is used in the context of RTSP since a number of RTSP servers use SDP to describe media formats, transport, etc. Currently SDP is accessed through an internal interface.

Q: Does JMF provide support for RTCP APP packets?

Currently JMF is only able to receive APP packets. There is no API that allows you to specify/set the payload of any of the RTCP packets.

Q: How can I control RTCP transmit interval?

The RTCP transmission interval is calculated based on a number of parameters, for example the number of participants, the bandwidth allocated for RTCP traffic, the packet size etc. At initialization time of the RTPManager you have an option to specify the value for RTCP bandwith (default is 5 percent) and thus influence the transmission interval between receiver reports:

        public void
        initialize( SessionAddress localAddresses[],
                SourceDescription sourceDescription[],
                double rtcpBandwidthFraction,
                double rtcpSenderBandwidthFraction,
                EncryptionInfo encryptionInfo)

Q: How can I release the resources taken up by the RTPManager (e.g. sockets for listening RTP sockets)?

Call the following methods:

        RTPManager.removeTargets( String reason);
        RTPManager.dispose();

Q: Can QuickTime Streaming Server work with JMF client using H.263/RTP?

Yes. There are two versions of H.263 payload header defined: RFC 2190 (payload type 34) and the new RFC 2429 (dynamic payload type 96-127). The QuickTime server uses the newer one and JMF used to support the older one. JMF 2.1.1 now supports both H.263 payload types.

Q: How can I add RTCP reports or statistics to my program?

The relevant methods you should look at are

        public GlobalReceptionStats getGlobalReceptionStats();
        public GlobalTransmissionStats getGlobalTransmissionStats();

from the RTPManager class.

Our sample program JMStudio utilizes these methods and displays them in a window. The source for JMStudio is available from: here

Q: In the scenario of RTSP server transmission and client reception, do I need to handpick the server/client ports?

Neither the client port nor the server port needs to be 'handpicked'. The ports are negotiated as part of the RTSP protocol: The client dictates which ports are available and which ports it allocates to listen on. Then the server is notified about the port values (via RTSP or some other protocol) and in return starts transmitting to the client ports from a server port which is chosen by the server (based on availability).

Q: Can the RTSP protocol tell the server side to close the RTP session?

Yes, by sending a TEARDOWN message. RTSP clients should send out TEARDOWNs if the disconnect and RTSP servers should be able to handle these messages. Some servers require an RTCP heartbeat. If they don't receive any RTCP packets over a predefined interval, they will assume that the client is gone and close the corresponding session(s).

Q: Can the RTSP protocol send BYE packets?

A BYE packet is part of the RTCP protocol and indicates that the corresponding participant has left the session. The RTSP way of terminating a session is by sending a TEARDOWN message.

JMF 2.1.1 Troubleshooting

Playback

Q: How come I cannot play "xyz.mov" or "abc.wav"?

Although JMF might support a certain media content type such as QuickTime and MPEG, it may not support the specific compression ( CODEC) used for the data inside that file. For example, a QuickTime file with Cinepak video will play in JMF, but a QuickTime file with Sorensen video will not play. This is because JMF 2.1.1 does not support the decoding of Sorensen-based video.

For a complete set of formats that JMF 2.1.1 supports, check out: link

Q: Why is the video not updating?

If the video screen is blank or not updating often it may be because the CPU is not able to decode and render video fast enough. This could be due to a slow computer or a slow file source or a slow graphics card. If its a slow file source, like a network file, then try making a local copy first.

Q: Why is there no sound?

There may be several reasons for not hearing sound when you expect it:

  • Your hardware volume is turned down
  • Your sound card is in use by another application -- exit the other application and reload the media file in JMF
  • JMF does not support the compression format of the audio track

Applets

Q: What is this error?
java.lang.NoClassDefFoundError: javax/media/ControllerListener

This happens in two situations:

  • jmf.jar is not in your CLASSPATH
  • jmf.jar is in your CLASSPATH but you are using the JDK 1.2+ appletviewer.
    JDK 1.2 and later require standard extensions to be loaded from <JDK>/jre/lib/ext directory. When you install JMF 2.1.1 <on Windows), it will automatically install the jmf.jar in the above mentioned directory. If for some reason it did not, or you installed JDK 1.2 or later after installing JMF, then you need to manually copy the jmf.jar and sound.jar files to the <JDK>/jre/lib/ext directory.

Q: Why am I unable to play a local file in an applet?

Some browsers require additional permissions to allow reading local files. If the browser prompts you for such permissions, you must say yes.

Q: Why don't JMF applets work in my browser?

Possible reasons are:

  • JMF is not properly installed on your machine or is not available on the website that contains the applet in question. Run the JMF diagnostics applet to see if JMF is installed properly: link
  • Your browser does not have a JDK 1.1.x compatible Java VM. Upgrade to a more recent version of the browser.
  • The applet might have thrown a security exception - check the Java Console pertaining to your browser.

Capture

Q: Why doesn't my video camera show up in JMStudio->Capture Preview?

JMF needs to query your system for capture devices. This happens automatically when you run JMStudio for the first time. If you upgraded from an earlier version of JMF 2.1.1 or just installed a new capture device or the registry file was deleted, you'll need to force JMF to query for capture devices again.

To force JMF to look for capture devices:

  • On Solaris, run "java SunVideoAuto" or "java SunVideoPlusAuto", depending on which card you have.
  • On Windows, run "java VFWAuto".

Q: How come I don't hear anything when I capture audio?

When audio is captured using JavaSound capture driver, it is not automatically played back, unless you are previewing the captured audio. Sometimes, even if you are previewing the captured audio, if your capture device does not support simultaneous capture and playback, then you will not be able to hear any sound.