Some of the control types are not implemented: H261Control, H263Control, KeyFrameControl, MpegAudioControl, PortControl.
Negative playback rates are not supported.
The audio playback quality of the All-java JMF is at mono, 8K ulaw (the format supported by the VM with the sun.audio interface).
In the All-Java versions of JMF, video capturing is not supported, and audio capture is only supported when running on J2SE 1.3 (which has the Java Sound API bundled with it).
The Direct Audio renderer and capturer are only supported on Windows.
Capture using Java Sound or Direct Audio can only be used once per instance of VM. Depending on the particular capture device, multiple instances of Java Sound or Direct Audio capture across different VM's on the same machine may or may not work.
Provided that a sound card supports simultaneous capture and output (duplex), Java Sound can capture and render at the same time. In such cases, Java Sound can only capture in the same format as the rendered output format. Changing to a different capture format after Java Sound has already opened for output will fail.
Java Sound's render buffer size can be controlled by the BufferControl obtained from the Player. It can be used to control the rendering latency. However reducing the buffer size to too small a value may result in audio breakup.
The JMF Windows performance pack supports all video capture devices which use the VFW (Video for Windows) interface. But we have only tested JMF against a few capture cards/cameras. Check the
tested list for the ones we've tested. Here are a few capture devices we tested with known problems:
Alaris QuickVideo DVC1
QuickCam Home USB
WinTV on 95/98
VFW capture can only be used once per instance of VM.
When using JMStudio and VFW capture, do not exit by hitting <ctrl-C>. Exit with the "Exit" item on the File menu.
Motion JPEG capture at larger than 320x240 will not be rendered correctly.
Slow capture devices might not work if stopped and started.
Using the JMF VCM decoder wrapper class requires individual VCM codecs to be installed on the machine.
When using the DirectDraw renderer, if the window is dragged off the screen or when the windows are overlapped, some strange color effects may appear.
JPEG decoder cannot handle interlaced video.
For playback local file caching, JMF stores the cache files in C:\temp on Win32 and /tmp on Solaris by default. The JMFRegistry application can be used to override the defaults.
JMF may run out of memory in the following situations:
The close method is not being called on Players or Processors when they are no longer being used. Without calling close, the Players or Processors will not release the memory and other resources (e.g. live threads).
There are still some external references to an unused Player or Processor such that garbage-collection is not taking place. References may come in many different ways. One of the less obvious ones is the player's visual and control component not being removed from their container components.
Some movies might require more memory to play than is available from the Java VM. In this case, you'll need to allocate more memory for JVM to run. For example, by issuing the command: "java -mx32m".
JVM might temporarily run out of memory after playing a few movies in succession. This is usually temporary and the VM can recover after garbage-collection. If you reload the movie a second time, sometimes it will work.
By default, the visual component and the control component do not interact very well with Swing components (JFC) because JMF components are heavy-weight and Swing components are light-weight. The "LIGHTWEIGHT_RENDERER" hint can be set on the Manager to create players that interact well with Swing components.
The Solaris and Win32 performance pack versions of JMF each support two different MPEG Players. One is a native, highly performance tuned non-modular player. The other one is a native modular player. Only the modular player fully supports the JMF plugin architecture with trade-offs in performance. By default, the non-modular player is used. To request for the modular player, set the "PLUGIN_PLAYER" hint on the Manager. The non-modular MPEG player does not support the LIGHTWEIGHT_RENDERER hint.
On Solaris 2.6 and above, the native threads model has to be set on the VM in order to use the XIL native accelerated video renderer. To do that, set the THREADS_FLAG environment variable to "native". e.g. on csh:
setenv THREADS_FLAG native
or start the VM with the -native flag. The runtime scripts that come with the Solaris JMF installation set this automatically for convenience.
On AIX, if you get a SIGSEGV when starting to play a media file, ensure that Java 1.1.6 APAR IX83143 in PTF IX83246 has been applied.
On AIX, if you find that H.263 video has patches that are not updated properly, ensure that Java 1.1.6 APAR IX83628 in PTF IX83247 has been applied.