Speakers Michael Bundschuh (Mike) and Ivan Wong (Ivan)
Moderator Edward Ort (MDR-edO)
This is a moderated forum.
MDR-edO: Welcome to Java Live! Today's chat is on the JavaTM Media Framework (JMF)
2.0. Our guests are Michael Bundschuh, manager of Java Media Products, and
engineer Ivan Wong, both membersof Sun's JMF team. They'll answer your questions
about JMF 2.0 and about the technology in general.
MDR-edO: Who has the first question?
rdrala: Can we use JMF 1.1 for Digital TV, voice commerce?
Mike: (reply to rdrala) There is an API called Java TVTM that is JMF-based
and targetted towards set-top boxes. This is where I would start for DTV. What do
you mean by voice commerce--using JMF to control voice prompts?
490project: how do I get Javax.media.sound package to work?
Ivan: Javax.media.sound is what we refered to the
JavaTM Sound API. The JS API is documented and the doc is downloadable from our web
site. Check that out.
bobn: At what point will I be able to use the JMF with video capture with our
SunRay implementation ?
Mike: TBD. We are working with the SunRay team to optimize JMF 2.0 for that
system.
anatolii: It would be great to know how to assert a custom demultiplexer in a
manager-created default processor. The reason to do it would be to maintain the
standard demultiplexer in registry, but use a specific one at a certain time.
(assuming that its input format is already supported by some standard
demultiplexer in the registry). This could be related to setting a custom version
of BasicSourceModule class (with replaced createDemultiplexer method) into the
MediaEngine class, if this is an option, please point at the right direction on
how to do it.
Ivan: There's currently no way in the API to assert a
custom demulitplexer without going through the plugin Manager. That's mostly because
the demux is created based on the content type of the incoming data.
Dimitris: I have a number of technical questions to pose, but I'll start with
something more generic. Does Sun plan to make JMF really cross-platform, that is,
beyond Windows and SPARC Solaris, or are we all going to have to live with the
restricted all-Java implementation? What about, for instance, Linux and MacOS?
Mike: (reply to Dimitris) Will JMF really be made cross-platform? Yes, within
limits. It takes a lot of resources and experience to port and optimize to
another platform. Sun currently does it for Java, Sparc and Windows--we plan
to work with interested parties to port to Linux, Mac, and anywhere else where
there is interest.
Tina: Can we connect a pull datasource directly to a file datasink without a
processor in the middle?
Ivan: Technically, a DataSource can be connected directly
to a DataSink; although in the current JMF 2.0 implementation, none of the
DataSink's will accept a direct input from a DataSource. So you'll need to have
an intermediate processor.
gareth: I observe a latancy of at least 600ms when using JMF to stream audio
between two PCs via RTP. Clearly this is unacceptable for telephony type
applications. The majority of the latency appears to occur at capture. Will
there be steps taken to improve on this in future releases of JMF?
MDR-edO: The number of questions in the queue is large and growing. This is a good
thing (it shows lots of interest in JMF). However, we probably won't be able to
answer all of them. If your question isn't answered in this session, please
submit it to JMF-interest@Java.sun.com.
Ivan: We are well-aware of the JMF latency issues. As
you can imagine, we are continuously working on it in conjunction with the
Java Sound team to make it better.
richard: What technology is currently available for performing digital signature
or encryption in JMF (such as, in video or audio streaming)?
Mike: (reply to Richard) JMF does not provide any encryption capabilities,
however JMF 2.0 allows you access on a frame-by-frame basis to the media
stream, which should allow you to use your own encryption at that point on
theindividual frames.
Mike: You should check out the Java encryption APIs for more info there.
Todd: Are there plans to support TCP (reliable) streaming on top of the UDP now
supported?
Ivan: We don't have any support for UDP over TCP. HTTP
streaming is reliable protocol. Perhaps, that can satisfy your requirements?
Eddie: When will the two versions of Java Sound be reconciled?
Mike: The Java Sound API is finalized in the JMF 2.0 API
FCS. Once they release the next version of Java 2, version 1.3, the Java Sound APIs
should be back in sync.
Eddie: What is the best way to go about sequencing clips for uninterrupted
presentation?
Ivan: There are a few approaches: 1) You can create a number
of players, one for each clip. Have them prefetched ahead of time, play them in
sequence. 2) Have some programatic way to concatenate your clips and deliver them
via a custom DataSource. That way, you can create just one player and play the
streams un-interrupted. That will take more work from you though.
peter elgee: What is the current state of the JMF implementation on Macintoshes.
Mike: Ongoing. We are working to make our pure Java version of JMF 2. 0 work on
the Mac using their latest MRJ.
Mike: I'd like to give thanks to Werner (sp?) for all his valuable feedback on
running on the Mac.
rgaleano: When playing an MPEG1 video stream, how can I join another stream
without killing the player?
Ivan: You really can't. The JMF player API
is designed to use one player to play back a stream. But just like the other
answer I gave, you may be able to cheat by concatenating the MPEG streams
together and deliver that to the player via a custom DataSource. I have prefaced
that by saying though that the window's MPEG player is not that robust. So you'll
probably run into some problems.
glen_s: Will there be a new release of JMF when JDK1.3 is released so that we
won't need the "performance pack" version of JMF installed to have sound
recording?
Mike: (reply to glen_s) JMF 2.x releases are not tied in any way to the J2
releases. After all, JMF 2.x is an optional package. The performance packs contain
native codecs to speed up video processing, which, for the foreseeable future,
means we will always release performance packs along with the Java platform version.
glen_s: Are there any implementations of JMF2 for video conferencing?
Mike: I have seen a lot of interest on our aliases for this. VC can bedone with
JMF 2.0, but the high latency in JMF 2.0 will makethis pretty unusable. As Ivan
mentioned, we are working toimprove this for future releases.
brett: How is setRenderer() implemented on a track? What are the sequence of
events that must be received before this method can be called successfully?
Ivan: TackControl.setRenderer can be called after the
processor is configured and before it's being realized.
rdrala: Can you give breif details about enhancements in JMF2.0?
Mike: 1.0 = playback 2.0 = playback + capture + transmit + transcode + plugin
architecture. Check out our FAQ--I think it explains it pretty well.
Chris Rijk: I'm planning on writing a program to do digital subtitling, and the
JMF is basically a godsend--thanks. I noticed you have support for reading
and writing MJPEG format files, but I as far as I can tell, currently there is
no support for the similar, but different DV format. Is reading/writing of DV files
available? If not, when might it appear?
Ivan: We don't yet have plan for the DV format at the
moment. Sorry about that.
bobn: I am trying to implement a data sharing mechanism (with a whiteboard). My
choices for the fabric are many technologies such as, JMS, JavaSpacesTM, Servlets, JDST. What is
the future for the JSDT ?
Mike: This is a little out of context with JMF, but here goes. Sun wants to
release JSDT as open source (true open source) and let it live on as free
software. We are still working to find a channel to accomplish this.
490project: How do I use JMF to perform the same functions as the Java Sound
API?
Ivan: JMF is based on Java Sound API and the JS API is
available through the JMF 2.0 implementation. For instance, you can use the JS API
directly if you want to bypass JMF.
Ted: I hear alot about "settop boxes". Can a machine (Windows/Linux/Max)
running Java/JMF be a settop box?
Mike: (reply to Ted) Yes, I believe an STB can be architected using a common
OSand JMF. However, for a true consumer product, you would really have towork on
reliability and quality for the consumer market. The Java TV API already
addresses this and has reference implemenations for certain existing and future
STBs.
gareth: Is JMF scheduled to become part of core Java, if so when?
Mike: Unknown. We would love to be in core, but they have to weigh in
the benefits versus cost (can you say size?) of being in core. One of our
future directions for JMF is to create a very small footprint version, which
maybe more palatable as a core API.
anatolii: to Ivan, about the demultiplexer: Can this be done by deriving from MediaEngine and implementing setSource in it? I suppose if I knew that's in
MediaEngine's setSource, I could create the proper BasicSourceModule with
overriden createDemultiplexer() method.
Ivan: Anatolli, I hope you haven't decompiled our classes! :)Unless you really
know the MediaEngine source, I wouldn't recommend subclassing from it! Try to
use the Plugin Manager to temporarily register your demux. That may work for you.
Eddie: What are the advantages of JMF over QuickTime for Java, and vice versa?
Mike: (reply to Eddie) JMF vs QT for Java? You have to pick the best tool forthe
job you are trying to do. Sun wants JMF to run on as many platformsas possible.
QT for Java will only run on QT enabled platforms (such as Mac and Windows). JMF is
a young product, QT is very mature. JMF provides a simple yet extensible API,
IMHO QT for the Java platform is tougher to use.
cconway: I am having problems realizing compressed videos with the JMF 2.0
Windows implementation. I have an AVI compressed with "CRAM" or Windows Video 1
compression. According to the Supported Media Formats chart, I should be able
to Decode and present this type of file but I get a ResourceUnavailableEvent
during realization. Is there something special I have to do to realize a video
of this type?
Ivan: Actually, JMF doesn't support the CRAMcodec (not
all codec's are supported in the AVI file format). That's the reason why you
couldn't realize the player.
MB: Is there a concrete date for the JMF2 Customizer, and why has it been such a
low priority for release?
Mike: No concrete date for the customizer yet, but we definitely plan on
releasing it. It's not low priority, believe me.
JoeC: I would like to capture audio coming from an RTP stream. If I register a
renderer will I be able to capture the audio and not have to worry about the RTP
details?
Ivan: Capturing data (and saving it, I presume)with RTP
should be fairly routine. The simplest is to create a processor from an RTP
locator; set the format on the track; create a DataSink to save the data to the
disk. We try to put some samples on the solutions page.
Eddie: This is clearly a technical forum. But I am curious if people might be
interested in also including some degreee of creative exhchange to JMF-interest.
I am curious to know more about the various types of applications people are
using JMF for. What are the chances of somebody, Sun or otherwise, hosting a
sort of JMF gallery to showcase JMF oriented projects and to generate ideas and
enthusiasm for various ways of using Java media technologies?
Mike: Sun would be very happy to promote discussion and the
sharing of info. For example, I can add a section to our FAQ or add a web page
pointing to interesting uses of JMF technology. Feel free to send me email at
mjb@sun.com if you want to do this. Who knows, JavaOneSM is coming up and maybe I
can get a couple of free full conf admissions to the most interesting ones.
chucha_: In the 'JMF solution' there is a problem supposed: 'Accessing
individual Video Frames from Processor';the solution is: 'to get the data from
the output DataSource of the Processor'.But on QuickTime raw
PushBufferDataSource I can't not to get FrameGrabbingControl not to register
BufferTransferHandler...What is the correct way to access individual Video
Frames without new CodecChain?
Ivan: Chucha, there is also another sample on the solutions page to access
individual frames with the custom DataSink. Perhaps that will work for
you? FrameGrabbingControl is supported on the processor, not the DataSource. So
that's another way you may want to try.
Eddie: (follow-up to my question about Java Sound gettting back in synch) When
is Java 2, ver 1.3 expected to be released?
Mike: I believe the latest estimate was March 2000, but don't quote me on that.
bobn: Would it be possible to get the code for the JMF/Speech demo that was given
at JavaOne ?
Mike: Maybe. Send email to andrew.hunt@east.sun.com
Kelly: In the Javadoc for the method grabFrame() of the interface
FrameGrabbingControl it states, "The frame is returned in raw decoded format.
The ImageConverter class can be used to convert it into a Java Image format." What
is the ImageConverter class. It does not seem to be a part of JDKTM 1.2.2 or JMK
2.0.
Ivan: Kelly, the ImageConverter class is under the Javax.media.util package. It's
not part of JDK but JMF.
eyal: What is the best way of implementing voice conferencing system using
JMF? Is it possible to create two RTP Managers one for income streams and one
for capture and transmission?
MDR-edO: We're nearing the end of the hour. But our guests have agreed to stay a bit
longer. So let's keep going for another 5 minutes.
Ivan: Eyal, RTP is definitely one choice for implementing VOIP.It is possible to
create 2 RTP managers, one for receivingand one for sending. In fact, you can
even use one RTP manager for both sending and receiving too. Check out theour
RTP docs. I will also mention that currently JMF has fairly large audiolatency
for capture and RTP. So bear that in mind when you are doing your VOIP app.
Eddie: Are there any plans for including SMPTE timecode utilities to JMF?
Mike: (reply to Eddie) There are no current plans for adding SMPTE
functionality.
Tina: Hi, I wonder if we can have Ivan and Mike answer all the unanswered
questions after the chat session and post them in the same file. Thanks.
Mike: Everybody, thanks for all your interest and questions. See you in
JMF-interest in the future. - Michael Bundschuh
MDR-edO: That ends today's session. Thanks to all of our participants.
The questions and answers were excellent. And special thanks to our guests.
Ivan: Bye. Talk to you again on JMF-interest! :)
MDR-edO: Last moderator (me) signing off. The forum is now unmoderated
Forum closed at Tue Jan 18 18:39:23 2000
Max number of users at any time: 43
_______
1 As used on this web site, the terms "Java
Virtual Machine" or "JVM" mean a virtual machine for the Java
platform.
Reader Feedback
Tell us what you think of this transcript.