★ wanayoo — archive 1999 http://developer.java.sun.com/developer/community/chat/JavaLive/2000/jl0118.htmlNouvelle recherche | Portail wanayoo
Java Technology Home Page
A-Z Index

Java Developer Connection(SM)
Chat

Downloads, APIs, Documentation
Java Developer Connection
Tutorials, Tech Articles, Training
Online Support
Community Discussion
News & Events from Everywhere
Products from Everywhere
How Java Technology is Used Worldwide
Print Button
 
JavaLive Transcripts Index

JavaTM Live
JavaTM Media Framework (JMF)
January 11, 2000

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.

Very worth reading Worth reading Not worth reading

If you have other comments or ideas for future articles, please type them here


Print Button
[ This page was updated: 1-Mar-2000 ]
Products & APIs | Developer Connection | Docs & Training | Online Support
Community Discussion | Industry News | Solutions Marketplace | Case Studies
Glossary - Applets - Tutorial - Employment - Business & Licensing - Java Store - Java in the Real World
FAQ | Feedback | Map | A-Z Index
For more information on Java technology
and other software from Sun Microsystems, call:
(800) 786-7638
Outside the U.S. and Canada, dial your country's AT&T Direct Access Number first.
Sun Microsystems, Inc.
Copyright © 1995-2000 Sun Microsystems, Inc.
All Rights Reserved. Terms of Use. Privacy Policy.