JMF setup

I'm running WinXP and downloaded the crossplaform JMF 2.1.1e and installed it in a directory C:\JMF-2.1.1e
Here is some info:
C:\windows\system32>java -version
java version "1.5.0_07"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_07-b03)
Java HotSpot(TM) Client VM (build 1.5.0_07-b03, mixed mode, sharing)
C:\windows\system32>set JMFHOME
JMFHOME=C:\JMF-2.1.1e
C:\windows\system32>set CLASSPATH
CLASSPATH=C:\JMF-2.1.1e\lib\jmf.jar;C:\JMF-2.1.1e\lib\customizer.jar;.;C:\ant-1.
5.1\lib\ant.jar;C:\ant-1.5.1\lib\optional.jar;C:\ant-1.5.1\lib\xercesImp.jar;C:\
ant-1.5.1\lib\xml-apis.jar;%JAVA_HOME%\lib\tools.jar;%JAVA_HOME%\src.jar;%JAVA_H
OME%\jre\lib\rt.jar;c:\bea\weblogic700\server\lib\weblogic.jar;C:\projects\J2EEC
MS\Development\redist\jakarta-log4j-1.2.8\dist\lib\log4j.jar;C:\Program Files\Java\j2re1.4.2_11\lib\ext\QTJava.zip
When I run the JMF Disanostics, I get:
JMF Diagnostics:
Java 1.1 compliant browser.....Maybe
JMF classes.....Not Found
I'm using the latest Firefox browser. any suggestions?
Thanks!
Brenda

When I run the JMF Disanostics, I get:
JMF Diagnostics:
Java 1.1 compliant browser.....Maybe
JMF classes.....Not Found
I'm using the latest Firefox browser. any
suggestions?Are you especially interested in running JMF
based applets in that browser?
The reason I ask is that I have WinXP, installed
the JMF Performance Pack, used JMStudio
to do some data conversions (stripping audio
tracks out of MOV's) used the JMF to stitch
together JPEG's into MOV's, developed a few
toy JMF apps., deployed them using web start..
yet my IE still reports the exact same message
as above. It cannot run JMF applets, and I
completely don't care.
Does JMStudio work for you?

Similar Messages

  • JMF with Native Libraries as Signed Applet

    Hello
    After spending a few days hunting through forums, digging into JMF source code and hacking in the dark I'm about to give up, but thought I'd start yet another thread on this. It's a long, sad story...
    Problem: Deploying a JMF based program that relies on native libraries (in this case the FOBS4JMF bindings) as an applet: how to get jmf.properties and the native libraries loaded properly.
    Partial Solution: the native libraries packaged in a signed jar file, added to the applet's archive property, extracted using getResourceAsStream(), and loaded using System.load(). This is how FOBS4JMF loads it's native library anyway (via the com.moesol.NativeLibraryFinder):
    Class classInApplet; // name of a class loaded by the applet
    File outputFile; // location for extracted library
    InputStream is = classInApplet.getResourceAsStream(resource);
    copyStream(is, outputFile);
    System.load(outputFile.getAbsolutePath());Why this doesn't really work:
    (a) JMF (com.media.util.Registry) only searches for jmf.properties (which contains the instructions to use the FOBS4JMF plugin) in real folders (i.e. not jars) on the classpath of the local machine. I could extract the jmf.properties to a folder on the local machine, but have no way of making sure that folder would be on the classpath. Calls to "System.getProperty("java.class.path") give varying results - including an empty string on FF/OSX. Even if i could get the classpath somehow, chances are that it wouldn't contain any folders writable under Vista's UAC, which would leave me out of luck.
    JMF also looks for a file called ".jmfdir" in various platform specific locations, and appends the contents of this file to the classpath, so if i could write to that file i'd be golden. This seems like it would work on non windows platforms, because JMF looks for that in "user.home"). However, from what i can tell, on windows, JMF uses a native call to a function called nGetUserHome() to determine where to find .jmfdir - which leads to the second problem...
    (b) the JMF native libraries are loaded through calls to System.loadLibrary(), not System.load(), which means that they have to be on the "java.library.path" in order to be found - and again, I have no way of extracting the libraries to a directory on that path (at least not one writable under Vista UAC). This wouldn't be a problem, as I could pre-load the libraries myself with System.load(), except that JMF throws an exception if it can't find one, and stops trying to do whatever it thinks it needs the library for. Again, not a problem if I use only the FOBS4JMF native code (though i would like to use the DirectAudio renderer on windows) - except that the nGetUserHome() function described above is in a native library (jmutil.dll). So, when com.media.util.Registry.getJMFDir() tries to find ".jmfdir" it first tries to load "jmutil.dll" using System.loadLibrary(). This throws an exception inf "jmutil.dll" is not on the "java.library.path", and com.media.util.Registry.getJMFDir() returns null. Here's the relevant code from com.media.util.Registry.getJMFDir() - with my annotations
    All of these problems are fixable by relatively minor tweaks to the JMF source - but I don't think that's allowed under the SCSL. So if anyone has any, i mean ANY other suggestions, please BRING 'EM ON.
    thanks
    -chris
    EDIT: just for kicks, i checked to see where JMF expects to find .jmfdir on windows - ie the result of nGetUserHome(). At least on XP this seems to be c:\WINDOWS. if it's the same on Vista, then fixing the loadLibrary problem won't help bc I still won't be able to write to this file.
    Edited by: wodenx on May 7, 2010 9:46 AM

    Hi-
    Thanks for responding so quickly.
    As far as the natives go, you might try using the new JNLP embedded applet ability in the plugin2 architecture.I was going to look into that, but decided it wasn't necessary since I can get the FOBS native code to link properly. It's really the registry that's the problem, since without solving that I can't get JMF to USE the FOBS code.
    Can you get it all to work if the JMF installer is invoked? If so, perhaps if you add an installer-desc that calls the normal JMF setup.exe (though that final warning to reboot is both unnecessary and odious).I don't think it would work even with the JMF installer, bc I need to point JMF at the FOBS specific jmf.properties. I might be get it to work by invoking my own installer though, to place my jmf.properties somewhere in the native class path, so that's worth looking at. Thank you. Problem there is that on Vista users would have to elevate to run the applet, which is not ideal.necessary and odious).
    Why do you particularly want to embed media in a web page?The customer may want it. I might be able to convince them to go with JNLP/WebStart, but I think I might have the same problem there. Please correct me if I'm wrong...
    I've also read that there are problems with JMF and JNLP owing to the fact that JMF doesn't recognize the security manager invoked by JNLP, and so gives your program no permissions. Haven't tried it myself yet.
    Thanks again!
    Edited by: wodenx on May 7, 2010 12:07 PM

  • JMF Implementation

    I am looking for the download page for JMF 2.1.1 implementation.
    I have looked in the following places with no success.
    JMF Setup
    http://java.sun.com/products/java-media/jmf/2.1.1/setup.html
    http://java.sun.com/products/java-media/jmf/2.1.1/setup-java.html
    http://java.sun.com/products/java-media/jmf/2.1.1/requirements.html#win
    Voice Chat
    http://java.sun.com/products/java-media/jmf/2.1.1/solutions/
    http://java.sun.com/products/java-media/jmf/2.1.1/solutions/ToolsTx.html
    RTP Support
    http://java.sun.com/products/java-media/jmf/2.1.1/support-rtp.html
    Please help.
    Thanks.

    http://www.sun.com/software/communitysource/jmf/download.xml
    Yes implementation, or as Sun calls it a Reference Implementation.
    wew

  • Installing Performance Pack without the setup prog

    I'm trying to install the Windows Performance Pack from my own installation program without having to run the normal JMF setup. I can install the cross-platform version but the AVIs I need to display are in a codec only supported by the Windows Performance Pack. (The installations where the AVIs are needed are only on Windows - people running UNIX don't seem to need the tutorial movies ;) ).
    I could also convert the AVIs to a different codec and use the cross-platform version, but I would prefer to keep them in their original form.
    Has anyone done this? I would assume this is legal as long as I include the license files, etc in the installation.
    Any help would be appreciated.

    I found the following on the JMF mailing list in case someone else is interested:
    http://swjscmail1.java.sun.com/cgi-bin/wa?A2=ind0107&L=jmf-interest&D=0&P=6559
    I haven't tried it yet but I believe it will work. I'll post again either way for anyone who's interested.

  • Class path setting for JMF

    I'm new to JMF never ever worked on it before... and now i'm currently stuck up.... i cant configure JMF have no idea how to go about the class path settings and the whole procedure involving it......I have also gone through the JMF setup page but in vain....plz help!!

    I'm also working on JMF these are the errors i get after running the SimplePlayerApplet.java file
    C:\j2sdk1.4\bin>javac SimplePlayerApplet.java
    SimplePlayerApplet.java:39: package javax.media does not exist
    import javax.media.*;
    ^
    SimplePlayerApplet.java:55: cannot resolve symbol
    symbol : class ControllerListener
    location: class SimplePlayerApplet
    public class SimplePlayerApplet extends Applet implements ControllerListener {
    ^
    SimplePlayerApplet.java:58: cannot resolve symbol
    symbol : class Player
    location: class SimplePlayerApplet
    Player player = null;
    ^
    SimplePlayerApplet.java:182: cannot resolve symbol
    symbol : class ControllerEvent
    location: class SimplePlayerApplet
    public synchronized void controllerUpdate(ControllerEvent event) {
    ^
    SimplePlayerApplet.java:88: cannot resolve symbol
    symbol : class MediaLocator
    location: class SimplePlayerApplet
    MediaLocator mrl = null;
    ^
    SimplePlayerApplet.java:106: cannot resolve symbol
    symbol : class MediaLocator
    location: class SimplePlayerApplet
    if ((mrl = new MediaLocator(mediaFile)) == null)
    ^
    SimplePlayerApplet.java:122: cannot resolve symbol
    symbol : variable Manager
    location: class SimplePlayerApplet
    player = Manager.createPlayer(mrl);
    ^
    SimplePlayerApplet.java:123: cannot resolve symbol
    symbol : class NoPlayerException
    location: class SimplePlayerApplet
    } catch (NoPlayerException e) {
    ^
    SimplePlayerApplet.java:190: cannot resolve symbol
    symbol : class RealizeCompleteEvent
    location: class SimplePlayerApplet
    if (event instanceof RealizeCompleteEvent) {
    ^
    SimplePlayerApplet.java:225: cannot resolve symbol
    symbol : class CachingControlEvent
    location: class SimplePlayerApplet
    } else if (event instanceof CachingControlEvent) {
    ^
    SimplePlayerApplet.java:226: cannot resolve symbol
    symbol : variable Controller
    location: class SimplePlayerApplet
    if (player.getState() > Controller.Realizing)
    ^
    SimplePlayerApplet.java:230: cannot resolve symbol
    symbol : class CachingControlEvent
    location: class SimplePlayerApplet
    CachingControlEvent e = (CachingControlEvent) event;
    ^
    SimplePlayerApplet.java:230: cannot resolve symbol
    symbol : class CachingControlEvent
    location: class SimplePlayerApplet
    CachingControlEvent e = (CachingControlEvent) event;
    ^
    SimplePlayerApplet.java:231: cannot resolve symbol
    symbol : class CachingControl
    location: class SimplePlayerApplet
    CachingControl cc = e.getCachingControl();
    ^
    SimplePlayerApplet.java:241: cannot resolve symbol
    symbol : class EndOfMediaEvent
    location: class SimplePlayerApplet
    } else if (event instanceof EndOfMediaEvent) {
    ^
    SimplePlayerApplet.java:244: cannot resolve symbol
    symbol : class Time
    location: class SimplePlayerApplet
    player.setMediaTime(new Time(0));
    ^
    SimplePlayerApplet.java:246: cannot resolve symbol
    symbol : class ControllerErrorEvent
    location: class SimplePlayerApplet
    } else if (event instanceof ControllerErrorEvent) {
    ^
    SimplePlayerApplet.java:249: cannot resolve symbol
    symbol : class ControllerErrorEvent
    location: class SimplePlayerApplet
    Fatal(((ControllerErrorEvent)event).getMessage());
    ^
    SimplePlayerApplet.java:250: cannot resolve symbol
    symbol : class ControllerClosedEvent
    location: class SimplePlayerApplet
    } else if (event instanceof ControllerClosedEvent) {
    ^
    19 errors
    C:\j2sdk1.4\bin>
    Please help as i have some assignments to do on it. Thanks!

  • Applet to register webcam?

    Hi,
    I am trying to develop a web application that uses an applet to capture images from a webcam. My applet works ok, but I first have to run the JMF setup program in order to register the webcam. Is it possible to write an applet that will check if a webcam is registered, and if not, register it? I want the user to be able to go to the website and use the applet after only having installed the driver for the webcam, without setting up JMF.
    Thanks

    If you are using JMF API for developing this application, then you have to install JMF first.

  • "Setup initialization error" cant extract jmf !!!

    Hi !!!!!!
    i am a newbie here, and after searching the internet and these forums for hours, i couldn't find a solution...So please HELP ME !!!!
    i had successfully installed JMF 2.1.1e earlier and it was running fine, but when i uninstall it , and again tried to re-install it, it is not even extracting !!!
    the error box is:-
    Setup Initialization error
    "Setup is unable to run a program needed to proceed with the installation. Restart your system and try again.
    Error - 105. "
    please advice me what to do, its an emergency !!!!

    So nobody can help me...
    If there's no solution for my problem, I want to try to install an old version of JMF. Where I can findit?

  • Cannot install JMF under Linux Mandrake 10

    I simply cannot install JMF under the Mandrake 10 Official Linux distribution. I downloaded the jmf-2_1_1e-linux-i586.bin file and tried to execute it as root. It unzipped some files then showed me an error message about AWT and GTK+. I found a hack consisting of modifying the .bin file to have the PATH variable point to SUN JDK, the error does not show up, but the installation still does not work. In fact, the installation works, but the Diagnostics applet keeps telling me than class files are not present. My Mozilla 1.6 Java plugin is working and displaying the applet. My JMF lib directory does not contain sound.jar, such jmf.jar. I set the CLASSPATH and LD_LIBRARY_PATH according to the readme.html file. I would like to know if it is a compatibility problem with Mandrake 10, the 2.6 kernel or if JMF just DO NO work under Linux. In the latter case, JMF is a violation to the Java portability philosophy and I would never use it on my own initiative, just if I were asked to.
    After the files are unzipped, I have the following warning and error messages.
    Warning:
    Name: HorScrollBar
    Class: XmScrollBar
    The specified scrollbar value is greater than the maximum
    scrollbar value minus the scrollbar slider size.
    JavaSound Capture Supported = true
    JavaSoundAuto: Committed ok
    java.lang.Error: Can't open video card 0
    java.lang.Error: Can't open video card 1
    java.lang.Error: Can't open video card 2
    java.lang.Error: Can't open video card 3
    java.lang.Error: Can't open video card 4
    java.lang.Error: Can't open video card 5
    java.lang.Error: Can't open video card 6
    java.lang.Error: Can't open video card 7
    java.lang.Error: Can't open video card 8
    java.lang.Error: Can't open video card 9
    Done.
    Even if I do not have a working video capture card (I have an ATI All-in-Wonder 128 but it is not working under 2.6 kernel), JMF should work because some people do not have a video capture card. I also tried with the cross-platform ZIP file, but this one does not contain sound.jar either and the Diagnostics applet keeps complaining about missing class files. I tried to search on the Web for solutions to this problem or for a way to change the CLASSPATH used by the Mozilla Java plug-in (if it uses a different CLASSPATH than the one from the environment variable), but nothing, nothing. Is there a distribution from which JMF would work better than Mandrake 10? Or can JMF work only under Microsoft Windows or Sun Solaris? I also tried Blackdown, but a README file directed me to the Sun's page, nothing to download here about JMF.

    well, your not the only one.
    I have it working in Debian, and JDS.(JMF is setup automatically in JDS).(2.6.6 kernel)
    I looked at the installation structure of JDS, and was able to duplicate what they did for Debian.
    Maybe it will work for Mandrake two??
    ok, all you have to do is copy or create soft links from your Mozilla directory, just like you did with the java plugin, and link to all the *.so files in JMF-2.1.1e/lib directory.
    Should work.
    I also read that not haveing the native files only matters if you are doing Capture. not play.
    to get your ATI All-in-Wonder 128 to work, make sure you install the correct driver, and have it working under linux, then try it in JMSTUDIO

  • JMF How to stream rtp from udp packet

    I implemented an rtsp client and use the client to setup two rtp session(audio, vedio). But when I use the example pramgram "AVReceive3" to stream the udp packet, it doesn't work.
    When the AVReceive3 receive the udp packet from the rtp port, it will call the update(ReceiveStreamEvent evt) function, and the event type is StreamMappedEvent, and the call to evt.getReceiveStream().getDataSource() return null.
    I thought the first event should be NewReceiveStreamEvent. Please help to solve the problem.
    What's rtp packet will cause the event StreamMappedEvent.
    Following is the code of AVReceive3.java:
    * AVReceive3.java
    * Created on 2007年10月30日, 下午4:11
    * To change this template, choose Tools | Template Manager
    * and open the template in the editor.
    package PlayerTest;
    import java.io.*;
    import java.awt.*;
    import java.net.*;
    import java.awt.event.*;
    import java.util.Vector;
    import javax.media.*;
    import javax.media.rtp.*;
    import javax.media.rtp.event.*;
    import javax.media.rtp.rtcp.*;
    import javax.media.protocol.*;
    import javax.media.protocol.DataSource;
    import javax.media.format.AudioFormat;
    import javax.media.format.VideoFormat;
    import javax.media.Format;
    import javax.media.format.FormatChangeEvent;
    import javax.media.control.BufferControl;
    * AVReceive3 to receive RTP transmission using the RTPConnector.
    public class AVReceive3 extends Thread implements ReceiveStreamListener, SessionListener,
    ControllerListener
    String sessions[] = null;
    RTPManager mgrs[] = null;
    Vector playerWindows = null;
    boolean dataReceived = false;
    Object dataSync = new Object();
    public AVReceive3(String sessions[])
    this.sessions = sessions;
    public void run()
    initialize();
    public boolean initialize() {
    try {
    mgrs = new RTPManager[sessions.length];
    playerWindows = new Vector();
    SessionLabel session;
    // Open the RTP sessions.
    for (int i = 0; i < sessions.length; i++) {
    // Parse the session addresses.
    try {
    session = new SessionLabel(sessions);
    } catch (IllegalArgumentException e) {
    System.err.println("Failed to parse the session address given: " + sessions[i]);
    return false;
    System.err.println(" - Open RTP session for: addr: " + session.addr + " port: " + session.port + " ttl: " + session.ttl);
    mgrs[i] = (RTPManager) RTPManager.newInstance();
    mgrs[i].addSessionListener(this);
    mgrs[i].addReceiveStreamListener(this);
    // Initialize the RTPManager with the RTPSocketAdapter
    mgrs[i].initialize(new RTPSocketAdapter(
    InetAddress.getByName(session.addr),
    session.port, session.ttl));
    // You can try out some other buffer size to see
    // if you can get better smoothness.
    BufferControl bc = (BufferControl)mgrs[i].getControl("javax.media.control.BufferControl");
    if (bc != null)
    bc.setBufferLength(350);
    } catch (Exception e){
    System.err.println("Cannot create the RTP Session: " + e.getMessage());
    return false;
    // Wait for data to arrive before moving on.
    long then = System.currentTimeMillis();
    long waitingPeriod = 30000; // wait for a maximum of 30 secs.
    try{
    synchronized (dataSync) {
    while (!dataReceived &&
    System.currentTimeMillis() - then < waitingPeriod) {
    if (!dataReceived)
    System.err.println(" - Waiting for RTP data to arrive");
    dataSync.wait(1000);
    } catch (Exception e) {}
    if (!dataReceived) {
    System.err.println("No RTP data was received.");
    close();
    return false;
    return true;
    public boolean isDone() {
    return playerWindows.size() == 0;
    * Close the players and the session managers.
    protected void close() {
    for (int i = 0; i < playerWindows.size(); i++) {
    try {
    ((PlayerWindow)playerWindows.elementAt(i)).close();
    } catch (Exception e) {}
    playerWindows.removeAllElements();
    // close the RTP session.
    for (int i = 0; i < mgrs.length; i++) {
    if (mgrs[i] != null) {
    mgrs[i].removeTargets( "Closing session from AVReceive3");
    mgrs[i].dispose();
    mgrs[i] = null;
    PlayerWindow find(Player p) {
    for (int i = 0; i < playerWindows.size(); i++) {
    PlayerWindow pw = (PlayerWindow)playerWindows.elementAt(i);
    if (pw.player == p)
    return pw;
    return null;
    PlayerWindow find(ReceiveStream strm) {
    for (int i = 0; i < playerWindows.size(); i++) {
    PlayerWindow pw = (PlayerWindow)playerWindows.elementAt(i);
    if (pw.stream == strm)
    return pw;
    return null;
    * SessionListener.
    public synchronized void update(SessionEvent evt) {
    if (evt instanceof NewParticipantEvent) {
    Participant p = ((NewParticipantEvent)evt).getParticipant();
    System.err.println(" - A new participant had just joined: " + p.getCNAME());
    * ReceiveStreamListener
    public synchronized void update( ReceiveStreamEvent evt) {
    System.out.println("\nReceive an receiveStreamEvent:"+evt.toString());
    RTPManager mgr = (RTPManager)evt.getSource();
    Participant participant = evt.getParticipant(); // could be null.
    ReceiveStream stream = evt.getReceiveStream(); // could be null.
    System.out.println("The RTPManager is:");
    if (evt instanceof RemotePayloadChangeEvent) {
    System.err.println(" - Received an RTP PayloadChangeEvent.");
    System.err.println("Sorry, cannot handle payload change.");
    System.exit(0);
    else if (evt instanceof NewReceiveStreamEvent) {
    try {
    stream = ((NewReceiveStreamEvent)evt).getReceiveStream();
    DataSource ds = stream.getDataSource();
    // Find out the formats.
    RTPControl ctl = (RTPControl)ds.getControl("javax.media.rtp.RTPControl");
    if (ctl != null){
    System.err.println(" - Recevied new RTP stream: " + ctl.getFormat());
    } else
    System.err.println(" - Recevied new RTP stream");
    if (participant == null)
    System.err.println(" The sender of this stream had yet to be identified.");
    else {
    System.err.println(" The stream comes from: " + participant.getCNAME());
    // create a player by passing datasource to the Media Manager
    Player p = javax.media.Manager.createPlayer(ds);
    if (p == null)
    return;
    p.addControllerListener(this);
    p.realize();
    PlayerWindow pw = new PlayerWindow(p, stream);
    playerWindows.addElement(pw);
    pw.setVisible(true);
    // Notify intialize() that a new stream had arrived.
    synchronized (dataSync) {
    dataReceived = true;
    dataSync.notifyAll();
    } catch (Exception e) {
    System.err.println("NewReceiveStreamEvent exception " + e.getMessage());
    return;
    else if (evt instanceof StreamMappedEvent) {
    if (stream != null)
    if(stream.getDataSource()!=null)
    DataSource ds = stream.getDataSource();
    // Find out the formats.
    RTPControl ctl = (RTPControl)ds.getControl("javax.media.rtp.RTPControl");
    System.err.println(" - The previously unidentified stream ");
    if (ctl != null)
    System.err.println(" " + ctl.getFormat());
    System.err.println(" had now been identified as sent by: " + participant.getCNAME());
    else if (evt instanceof ByeEvent) {
    System.err.println(" - Got \"bye\" from: " + participant.getCNAME());
    PlayerWindow pw = find(stream);
    if (pw != null) {
    pw.close();
    playerWindows.removeElement(pw);
    * ControllerListener for the Players.
    public synchronized void controllerUpdate(ControllerEvent ce) {
    Player p = (Player)ce.getSourceController();
    if (p == null)
    return;
    // Get this when the internal players are realized.
    if (ce instanceof RealizeCompleteEvent) {
    PlayerWindow pw = find(p);
    if (pw == null) {
    // Some strange happened.
    System.err.println("Internal error!");
    System.exit(-1);
    pw.initialize();
    pw.setVisible(true);
    p.start();
    if (ce instanceof ControllerErrorEvent) {
    p.removeControllerListener(this);
    PlayerWindow pw = find(p);
    if (pw != null) {
    pw.close();
    playerWindows.removeElement(pw);
    System.err.println("AVReceive3 internal error: " + ce);
    * A utility class to parse the session addresses.
    class SessionLabel {
    public String addr = null;
    public int port;
    public int ttl = 1;
    SessionLabel(String session) throws IllegalArgumentException {
    int off;
    String portStr = null, ttlStr = null;
    if (session != null && session.length() > 0) {
    while (session.length() > 1 && session.charAt(0) == '/')
    session = session.substring(1);
    // Now see if there's a addr specified.
    off = session.indexOf('/');
    if (off == -1) {
    if (!session.equals(""))
    addr = session;
    } else {
    addr = session.substring(0, off);
    session = session.substring(off + 1);
    // Now see if there's a port specified
    off = session.indexOf('/');
    if (off == -1) {
    if (!session.equals(""))
    portStr = session;
    } else {
    portStr = session.substring(0, off);
    session = session.substring(off + 1);
    // Now see if there's a ttl specified
    off = session.indexOf('/');
    if (off == -1) {
    if (!session.equals(""))
    ttlStr = session;
    } else {
    ttlStr = session.substring(0, off);
    if (addr == null)
    throw new IllegalArgumentException();
    if (portStr != null) {
    try {
    Integer integer = Integer.valueOf(portStr);
    if (integer != null)
    port = integer.intValue();
    } catch (Throwable t) {
    throw new IllegalArgumentException();
    } else
    throw new IllegalArgumentException();
    if (ttlStr != null) {
    try {
    Integer integer = Integer.valueOf(ttlStr);
    if (integer != null)
    ttl = integer.intValue();
    } catch (Throwable t) {
    throw new IllegalArgumentException();
    * GUI classes for the Player.
    class PlayerWindow extends Frame {
    Player player;
    ReceiveStream stream;
    PlayerWindow(Player p, ReceiveStream strm) {
    player = p;
    stream = strm;
    public void initialize() {
    add(new PlayerPanel(player));
    public void close() {
    player.close();
    setVisible(false);
    dispose();
    public void addNotify() {
    super.addNotify();
    pack();
    * GUI classes for the Player.
    class PlayerPanel extends Panel {
    Component vc, cc;
    PlayerPanel(Player p) {
    setLayout(new BorderLayout());
    if ((vc = p.getVisualComponent()) != null)
    add("Center", vc);
    if ((cc = p.getControlPanelComponent()) != null)
    add("South", cc);
    public Dimension getPreferredSize() {
    int w = 0, h = 0;
    if (vc != null) {
    Dimension size = vc.getPreferredSize();
    w = size.width;
    h = size.height;
    if (cc != null) {
    Dimension size = cc.getPreferredSize();
    if (w == 0)
    w = size.width;
    h += size.height;
    if (w < 160)
    w = 160;
    return new Dimension(w, h);
    public static void main(String argv[]) {
    //if (argv.length == 0)
    // prUsage();
    String sessions[]= new String[] {"127.0.0.1/6670","127.0.0.1/6672"};
    AVReceive3 avReceive = new AVReceive3(sessions);
    if (!avReceive.initialize()) {
    System.err.println("Failed to initialize the sessions.");
    System.exit(-1);
    // Check to see if AVReceive3 is done.
    try {
    while (!avReceive.isDone())
    Thread.sleep(1000);
    } catch (Exception e) {}
    System.err.println("Exiting AVReceive3");
    static void prUsage() {
    System.err.println("Usage: AVReceive3 <session> <session> ");
    System.err.println(" <session>: <address>/<port>/<ttl>");
    System.exit(0);
    }// end of AVReceive3
    Following is the code of RTPSocketAdapter.java:
    * RTPSocketAdapter.java
    * Created on 2007&#24180;10&#26376;30&#26085;, &#19979;&#21320;4:13
    * To change this template, choose Tools | Template Manager
    * and open the template in the editor.
    package PlayerTest;
    import java.io.IOException;
    import java.net.InetAddress;
    import java.net.DatagramSocket;
    import java.net.MulticastSocket;
    import java.net.DatagramPacket;
    import java.net.SocketException;
    import javax.media.protocol.DataSource;
    import javax.media.protocol.PushSourceStream;
    import javax.media.protocol.ContentDescriptor;
    import javax.media.protocol.SourceTransferHandler;
    import javax.media.rtp.RTPConnector;
    import javax.media.rtp.OutputDataStream;
    * An implementation of RTPConnector based on UDP sockets.
    public class RTPSocketAdapter implements RTPConnector {
    DatagramSocket dataSock;
    DatagramSocket ctrlSock;
    InetAddress addr;
    int port;
    SockInputStream dataInStrm = null;
    SockInputStream ctrlInStrm = null;
    SockOutputStream dataOutStrm = null;
    SockOutputStream ctrlOutStrm = null;
    public RTPSocketAdapter(InetAddress addr, int port) throws IOException {
    this(addr, port, 1);
    public RTPSocketAdapter(InetAddress addr, int port, int ttl) throws IOException {
    try {
    if (addr.isMulticastAddress()) {
    dataSock = new MulticastSocket(port);
    ctrlSock = new MulticastSocket(port+1);
    ((MulticastSocket)dataSock).joinGroup(addr);
    ((MulticastSocket)dataSock).setTimeToLive(ttl);
    ((MulticastSocket)ctrlSock).joinGroup(addr);
    ((MulticastSocket)ctrlSock).setTimeToLive(ttl);
    } else {
    dataSock = new DatagramSocket(port, InetAddress.getLocalHost());
    ctrlSock = new DatagramSocket(port+1, InetAddress.getLocalHost());
    } catch (SocketException e) {
    throw new IOException(e.getMessage());
    this.addr = addr;
    this.port = port;
    * Returns an input stream to receive the RTP data.
    public PushSourceStream getDataInputStream() throws IOException {
    if (dataInStrm == null) {
    dataInStrm = new SockInputStream(dataSock, addr, port);
    dataInStrm.start();
    return dataInStrm;
    * Returns an output stream to send the RTP data.
    public OutputDataStream getDataOutputStream() throws IOException {
    if (dataOutStrm == null)
    dataOutStrm = new SockOutputStream(dataSock, addr, port);
    return dataOutStrm;
    * Returns an input stream to receive the RTCP data.
    public PushSourceStream getControlInputStream() throws IOException {
    if (ctrlInStrm == null) {
    ctrlInStrm = new SockInputStream(ctrlSock, addr, port+1);
    ctrlInStrm.start();
    return ctrlInStrm;
    * Returns an output stream to send the RTCP data.
    public OutputDataStream getControlOutputStream() throws IOException {
    if (ctrlOutStrm == null)
    ctrlOutStrm = new SockOutputStream(ctrlSock, addr, port+1);
    return ctrlOutStrm;
    * Close all the RTP, RTCP streams.
    public void close() {
    if (dataInStrm != null)
    dataInStrm.kill();
    if (ctrlInStrm != null)
    ctrlInStrm.kill();
    dataSock.close();
    ctrlSock.close();
    * Set the receive buffer size of the RTP data channel.
    * This is only a hint to the implementation. The actual implementation
    * may not be able to do anything to this.
    public void setReceiveBufferSize( int size) throws IOException {
    dataSock.setReceiveBufferSize(size);
    * Get the receive buffer size set on the RTP data channel.
    * Return -1 if the receive buffer size is not applicable for
    * the implementation.
    public int getReceiveBufferSize() {
    try {
    return dataSock.getReceiveBufferSize();
    } catch (Exception e) {
    return -1;
    * Set the send buffer size of the RTP data channel.
    * This is only a hint to the implementation. The actual implementation
    * may not be able to do anything to this.
    public void setSendBufferSize( int size) throws IOException {
    dataSock.setSendBufferSize(size);
    * Get the send buffer size set on the RTP data channel.
    * Return -1 if the send buffer size is not applicable for
    * the implementation.
    public int getSendBufferSize() {
    try {
    return dataSock.getSendBufferSize();
    } catch (Exception e) {
    return -1;
    * Return the RTCP bandwidth fraction. This value is used to
    * initialize the RTPManager. Check RTPManager for more detauls.
    * Return -1 to use the default values.
    public double getRTCPBandwidthFraction() {
    return -1;
    * Return the RTCP sender bandwidth fraction. This value is used to
    * initialize the RTPManager. Check RTPManager for more detauls.
    * Return -1 to use the default values.
    public double getRTCPSenderBandwidthFraction() {
    return -1;
    * An inner class to implement an OutputDataStream based on UDP sockets.
    class SockOutputStream implements OutputDataStream {
    DatagramSocket sock;
    InetAddress addr;
    int port;
    public SockOutputStream(DatagramSocket sock, InetAddress addr, int port) {
    this.sock = sock;
    this.addr = addr;
    this.port = port;
    public int write(byte data[], int offset, int len) {
    try {
    sock.send(new DatagramPacket(data, offset, len, addr, port));
    } catch (Exception e) {
    return -1;
    return len;
    * An inner class to implement an PushSourceStream based on UDP sockets.
    class SockInputStream extends Thread implements PushSourceStream {
    DatagramSocket sock;
    InetAddress addr;
    int port;
    boolean done = false;
    boolean dataRead = false;
    SourceTransferHandler sth = null;
    public SockInputStream(DatagramSocket sock, InetAddress addr, int port) {
    this.sock = sock;
    this.addr = addr;
    this.port = port;
    public int read(byte buffer[], int offset, int length) {
    DatagramPacket p = new DatagramPacket(buffer, offset, length, addr, port);
    try {
    sock.receive(p);
    } catch (IOException e) {
    return -1;
    synchronized (this) {
    dataRead = true;
    notify();
    System.out.println("RTPSocketAdapter receive RTP packet from port:"+port);
    System.out.println("The received RTP packet:"+new String(buffer));
    return p.getLength();
    public synchronized void start() {
    super.start();
    if (sth != null) {
    dataRead = true;
    notify();
    public synchronized void kill() {
    done = true;
    notify();
    public int getMinimumTransferSize() {
    return 2 * 1024; // twice the MTU size, just to be safe.
    public synchronized void setTransferHandler(SourceTransferHandler sth) {
    this.sth = sth;
    dataRead = true;
    notify();
    // Not applicable.
    public ContentDescriptor getContentDescriptor() {
    return null;
    // Not applicable.
    public long getContentLength() {
    return LENGTH_UNKNOWN;
    // Not applicable.
    public boolean endOfStream() {
    return false;
    // Not applicable.
    public Object[] getControls() {
    return new Object[0];
    // Not applicable.
    public Object getControl(String type) {
    return null;
    * Loop and notify the transfer handler of new data.
    public void run() {
    while (!done) {
    synchronized (this) {
    while (!dataRead && !done) {
    try {
    wait();
    } catch (InterruptedException e) { }
    dataRead = false;
    if (sth != null && !done) {
    sth.transferData(this);
    Thanks.

    The error of No format has been registered for RTP Payload type 96
    is caused by the dynamic payload mapping, when I add the dynamic mapping between dynamic payload and format. The Player cann't work yet. I think it because JMF doesn't support the format of my clips. For example:
    video: a=rtpmap:96 H263-2000/90000
    audio:a=rtpmap:97 MP4A-LATM/12000/1
    Is there some available plugin to support these format?
    Thanks

  • Problem installing jmf

    Hello i have a problem in installing the jmf 2.1.1.e on windows vista, after i download the file jmf-2_1_1e-windows-i586 and i double click i see a window of an extraction procedure but then nothing happens and the setup don't show.
    Please help me
    PS: ( i already followed the installation instructions on the site )
    Edited by: 953606 on Aug 19, 2012 4:45 PM

    Did you tried it running it in compatability mode for xp?

  • Not able to recognize any video/audio devices using jmf and java soun

    Hi ,
    I need one help from your side.
    Here I am expecting some clarifications from you. Before that let you my environement.
    My working environment :
    Eclipse tool and added jmf jar to my project I did not do any thing more.
    If any thing I need to do just let me know. My target platform is MAC & UBUNTU.
    Please bare with my questions.
    1) I am not able to recognize any video/audio devices using jmf and java sound APIs on My system.
    ( I checked with the app mentioned in the http://www.java-forums.org/new-java/11201-jmf-cannot-connect-device.html )
    Do we need any administrives rights for our working PC.
    What is the procedure/ setup I need to follow from a java application to enable particular audio/video device since I dont about end-user system setup right.
    If possible send some sample code to recognize /r detect audio device ( voice input ). It should run on both MAC and UBUNTU.
    2) I run the one sample audio recording application of this link (http://www.jsresources.org/examples/SimpleAudioRecorder.java.html) which is provided by YOU.
    I got output audio file and able to hear voice on UBUNTU system but not able to hear voice on MAC system.
    I heared that default line in ( audio setup of the sys) is wont take any voice data on MAC.Why I made this stmt means we are getting false when using isSupported methods of JAVA SOUND API.
    ( like for TragetdataLine ...i,e, all ports are getting false)
    I have one sample audio recording app implemented by QUICKTIME API. In this case also he taking audio ftom device only using quicetime API.
    With that we are able to record and hear audio ( voice input --> not line in , external device we added some thing like SSB...)
    3) In case of Video capturing DataSource, Streams are implemented by PullBufferDataSource , PullBufferStream intefaces used.
    In case of Audio capturing DataSource, Streams are implemented by PushBufferDataSource, PushBufferStream intefaces used.
    Can you explain the reasons ? I gone through API but i am not clear.
    HOPE I WILL BE CLARIFIED EVERY THING FROM YOU.
    Thanks
    RamaRao.G

    Hi ,
    I need one help from your side.
    Here I am expecting some clarifications from you. Before that let you my environement.
    My working environment :
    Eclipse tool and added jmf jar to my project I did not do any thing more.
    If any thing I need to do just let me know. My target platform is MAC & UBUNTU.
    Please bare with my questions.
    1) I am not able to recognize any video/audio devices using jmf and java sound APIs on My system.
    ( I checked with the app mentioned in the http://www.java-forums.org/new-java/11201-jmf-cannot-connect-device.html )
    Do we need any administrives rights for our working PC.
    What is the procedure/ setup I need to follow from a java application to enable particular audio/video device since I dont about end-user system setup right.
    If possible send some sample code to recognize /r detect audio device ( voice input ). It should run on both MAC and UBUNTU.
    2) I run the one sample audio recording application of this link (http://www.jsresources.org/examples/SimpleAudioRecorder.java.html) which is provided by YOU.
    I got output audio file and able to hear voice on UBUNTU system but not able to hear voice on MAC system.
    I heared that default line in ( audio setup of the sys) is wont take any voice data on MAC.Why I made this stmt means we are getting false when using isSupported methods of JAVA SOUND API.
    ( like for TragetdataLine ...i,e, all ports are getting false)
    I have one sample audio recording app implemented by QUICKTIME API. In this case also he taking audio ftom device only using quicetime API.
    With that we are able to record and hear audio ( voice input --> not line in , external device we added some thing like SSB...)
    3) In case of Video capturing DataSource, Streams are implemented by PullBufferDataSource , PullBufferStream intefaces used.
    In case of Audio capturing DataSource, Streams are implemented by PushBufferDataSource, PushBufferStream intefaces used.
    Can you explain the reasons ? I gone through API but i am not clear.
    HOPE I WILL BE CLARIFIED EVERY THING FROM YOU.
    Thanks
    RamaRao.G

  • Using Java Media Framework (JMF) in Eclipse

    Hey all, I want to use JMF to have a video shown in my GUI application in Eclipse and have no idea where to start, I know the basics of GUI and how to show pictures etc but otherwise i don't know anything about videos... Any help would be hugely appreciated

    you can simply use the setup file available with JMF to install it ; then, the classpath will be automatically updated, and you should be able to use the JMF classes inside your application (even with eclipse)

  • Is licence required for implementing JavaTv and JMF.

    Hi,,
    I am trying to develop GEM middleware for my STB,
    The STB has OS20 as RTOS and implemented on an ST chip
    This GEM is DVB MHP minus DVB.
    We have to implement JavaTV package and JMF for that,
    But do we have to pay any royalty to SUN for implementing the JavaTV or JMF packages or can we implement the binary versions of the packages.
    Please letme know how to implement the following packages
    org.havic.*
    org.davic.*
    javax.tv.*
    org.dvb.*
    and JMF?

    Hi Rohit,
    let me also add a few words. In principle the process Sales Order Processing B2B with ERP sales order in CRM Web Channel means that you setup (a) Web shop(s) that use and display the CRM product catalog but create orders directly in SAP ERP without first creating them in SAP CRM. It also allows to use certain E-Marketing features of CRM in the Web shop. The CRM product catalog in this process can only be used if you do use the TREX. There is no way of directly call up the catalog from CRM in the Web shop by bypassing the TREX.
    In the SAP E-Commerce for SAP ERP solution (ECO ERP) we in contrast offer the possibility to use the ERP catalog without the TREX. In this solution you can use the Memory Catalog which is not using the TREX. This solution by this way allows to directly use and display the ERP catalog and create orders directly in SAP ERP.
    For the CRM catalog in contrast we do not have something similar to the Memory Catalog. Instead you DO need to use the TREX to display the CRM catalog in the Web shop.
    The only option you have to "avoid" the TREX i a CRM web shop is what Easwar and Christoph have written about: The usage of an external catalog from a 3rd party catalog engine via the Open Catalog Interface (OCI) in the CRM Web shop. This we do offer for the CRM Web shop. However if you do not have an external catalog engine and want to use the CRM catalog then again you do need to use the TREX. It does not matter if you do not want to use product search nor prices other than fro ERP sales order.
    Greetings
    Torsten Kliesch

  • HELP, Diagnostics Applet JMF classes.....Not Found

    Hi,
    I installed JMF and verified the jars are included in classpath and path, but when I run the diagnostic applet page, it still says Applet JMF classes not found, anyone has any idea?
    classpath:
    .;.;.;C:\PROGRA~1\JMF21~1.1E\lib\sound.jar;C:\PROGRA~1\JMF21~1.1E\lib\jmf.jar;C:\PROGRA~1\JMF21~1.1E\lib
    ;C:\WINDOWS\java\classes;.
    path:
    C:\Program Files\ThinkPad\Utilities;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\Program F
    iles\IBM\Infoprint Select;C:\Notes;C:\Program Files\XLView;C:\lotus\compnent;C:\Utilities;C:\Program Fil
    es\IBM\Personal Communications\;C:\Program Files\IBM\Trace Facility\;C:\Program Files\ThinkPad\ConnectUt
    ilities;C:\WINDOWS\Downloaded Program Files;C:\Program Files\Common Files\Lenovo;C:\Program Files\ATI Te
    chnologies\ATI Control Panel
    JMF Diagnostics:
    Java 1.1 compliant browser.....Maybe
    JMF classes.....Not Found
    http://java.sun.com/javase/technologies/desktop/media/jmf/2.1.1/jmfdiagnostics.html

    Everything looks fine as far as the setup goes... Unless you're having problems with a specific JMF application, I wouldn't worry about the diagnostic applet telling you it isn't installed correctly.
    Very well could be a browser security issue with the applet...

  • Trouble installing jmf

    I having trouble installing jmf on my laptop runing Windows XP. I downloaded the jmf-2_1_1e-windows-i586.exe onto my computer and it run succesfully, but I am still not able to import javax.media into my jdk. When I run JMF diagnostics it also tells me that JFM classes - Not Found.
    Can someone please help?

    jmf-2_1_1e-windows-i586.exe is designed for Windows 9X or NT4.0. So, it may very well not install correctly.
    You'll probably need to setup your environmental variables yourself. If you're using an IDE, you need to manually add JMF.jar to your list of project libraries.

Maybe you are looking for

  • Blend complete set before blend is complete

    I have a set of 32 XY coordinates that are fed to the PCI-7344 using the flexBlend function. I wait for the blend complete bit to be set prior to passing the next set of coordinates. This works except for the final set of coordinates where the bit is

  • DVI-HDMI-SDI Conversions and Color Space-what is happening?

    Can someone explain signal processing when connecting computer monitors and LCD TVs via different connections and conversions? - DVI to HDMI - SDI (BM) to DVI - SDI (BM) to DVI to HDMI - SDI to DVI to HDMI Are there differences in how each conversion

  • Debug an oracle function with toad 7.4, oracle 9i

    Hello, i wanna debug an oracle function with toad 7.4 so i wanna give param to this function and fix breakpoint and verfy some variables values ... etc could you show me how debug it? Thanks Regards Elyes

  • Can't import .mov prores 422

    I'm trying to import a .mov file and keep getting the message "No importable files" I did some reading on the forums and there seems to be no reason I shouldn't be able to import as the file is ProRes 422 Any thoughts?

  • Accessing EJBs from a Web project

    Hi, I am getting the error: "com.sap.engine.services.jndi.persistent.exceptions.NameNotFoundException: Path to object does not exist at java:comp, the whole lookup name is java:comp/env/ejb/UserInfoServer." when I try to access the session bean from