Re: Problems using JMF

JMF doesn't support many different video resolutions looks like this is one of them, see the JMF main page for a list of supported formats and resolutions. I ran into the same problem trying to run .Mov files, out of 8 I downloaded to test, only 1 played and without sound.

It was just experimentation for me so I didn't really try too hard to find another solution, but if I were forced to do it, I would probably seek the solution in C/C++ and use JNI to call the functions from my Java app since it dosn't seem like Sun is going to update the JMF package anytime soon.

Similar Messages

  • Problem with  M-JPEG by using JMF and JPEGCodec .

    Hi, there,
    I want to implement a M-JPEG using JMF and JPEGCodec, is that possible?(I already been trapped)
    My problem is I have a video clip which is a AVI file, the video format is following:
    Video format: RGB, 160x120, FrameRate=14.9, Length=57600, 24-bit, Masks=3:2:1, P
    ixelStride=3, LineStride=480, Flipped.
    I already convered a frame to an Image object(video format with JPEG and CVID doesn't work) ,
    I can also convert this Image back as a Buffer, It works fine with me .But to use JPEGCodec( provided by com.sun.image.codec.jpeg ) I need to convert an Image to a BufferedImage, I use the following defination:
    BufferedImage   bImage = new BufferedImage(frameImage.getWidth(null), frameImage.getHeigh(null),BufferedImage.TYPE_INT_RGB); It seems work, But when I use JPEGImageEncoder to encoder this bImage and save as a jpg file,
    everything is black .
    I also need to cast BufferedImage to an Image: frameImage = (Image) bImage; then I convert frameImage back to Buffer.My video clip still running , but every frame now became black .
    can someone help me? thanks in advance.

    I solved this problem . But I met a new problem.
    I converted the above video clip into a JPEG and I want to create a DataSink for it. the messege is:
    Video format: JPEG, 160x120, FrameRate=12.0, Length=3574
    - set content descriptor to: AVI
    - set track format to: JPEG
    Cannot transcode any track to: JPEG
    Cannot create the DataSink: javax.media.NoDataSinkException: Cannot find a DataS
    ink for: com.sun.media.multiplexer.RawBufferMux$RawBufferDataSource@2b7eea
    Transcoding failedHope some Java Experts can help me.
    Regards.

  • Problem with Transmitting media using JMF

    Hello Everyone !!
    I am working on an application called SIPSpeaker which listens for incoming calls, answer the call and plays a message. I am done with the first two parts of the application, i.e. it can successfully answers the call. I am now facing problem with transmitting audio to the SIP Phone (the caller). I am using JMF and I am trying to send the audio over RTP.
    My code looks something like this....
    locator = new MediaLocator("rtp://130.237.214.124:" + port + "/audio");
            f = new File("C:/1.wav");
            try {
                ds = Manager.createDataSource(f.toURL());         
            } catch (NoDataSourceException ex) {
                ex.printStackTrace();
            } catch (MalformedURLException ex) {
                ex.printStackTrace();
            } catch (IOException ex) {
                ex.printStackTrace();
            format = new Format[]{new AudioFormat(AudioFormat.GSM_RTP,8000,8,1)};
            contentDesc = new ContentDescriptor(ContentDescriptor.RAW_RTP);
                    processor = Manager.createProcessor(ds);
                    waitForState(processor,Processor.Configured);
                    processor.setContentDescriptor(contentDesc);
                    processor.getTrackControls()[0].setFormat(format[0]);
                    waitForState(processor,Processor.Realized);
    try {
                sink = Manager.createDataSink(processor.getDataOutput(),locator);
                System.out.println("6");
            } catch (NotRealizedError ex) {
                ex.printStackTrace();
            } catch (NoDataSinkException ex) {
                ex.printStackTrace();
    processor.start();
            try {
                sink.open();
                sink.start();
            } catch (SecurityException ex) {
                ex.printStackTrace();
            } catch (IOException ex) {
                ex.printStackTrace();
               we are required to work with a .wav file as input ....
    i am new to java and to JMF and i have absolutely no idea whats going wrong...
    please help me
    Regards,
    Sanjay !!

    Hello
    following is the error i get
    Failed to realize: com.sun.media.ProcessEngine@618d26
    Cannot build a flow graph with the customized options:
    Unable to transcode format: mpeglayer3, 44100.0 Hz, 16-bit, Stereo, LittleEndian, Signed, 16000.0 frame rate, FrameSize=32768 bits
    to: mpegaudio/rtp, 8000.0 Hz, 8-bit, Mono
    outputting to: RAW/RTP
    Error: Unable to realize com.sun.media.ProcessEngine@618d26
    what could be the problem ???

  • Sound problem while transimission over the network by using JMF API

    i had done an application which transmit audio and video over the network by using JMF API in JAVA. All my application work very well but i have a problem with the sound while i transmit it. this sound has a very bad quality (i am using AVReceive2.java) .
    has anyone an indication or solution for my problem
    it's very urgent, please help me.
    regards
    sar

    you can try modifing de Capture example from JMF Solutions.
    change this function:
    public int startCapture() {
         int result = -1;
         enableComponents(false);
         buttonStart.setLabel("Pause");
         buttonEnd.setEnabled(true);
         startMonitoring();
         try {
    processor.start();
    DataSource clone = Manager.createCloneableDataSource(datasource);
         MediaLocator ml2 = new MediaLocator("file://capture.mov");
    System.out.println("Content Type " + clone.getContentType());
    datasink = Manager.createDataSink(processor.getDataOutput(), ml2);
         datasink.open();
    datasink.addDataSinkListener(this);
         datasink.start();
    result = 0;
         } catch (Exception e) {
         System.err.println("DataSink Exception " + e);
    result= -1;
    Regards.
    Fernando

  • URGENT- problem in detecting audio device using  JMF in  WIndows7 - 64 bit

    Hi,
    I am trying to detect the audio device in windows 7 -64 bit OS, using JMF API with JRE 1.6.18.But it showing zero device found.below i have mentioned the source code that i have used.please suggest how to solve this , thanks in advance.
    import java.util.ArrayList;
    import java.util.Vector;
    import javax.media.CaptureDeviceInfo;
    import javax.media.CaptureDeviceManager;
    import javax.media.format.AudioFormat;
    import javax.media.format.VideoFormat;
    public class CaptureDeviceFinder {
    //possible audio formats available
    static String audioformats[] = {
    AudioFormat.LINEAR };
    static ArrayList available_audiolist= new ArrayList();
    public static void main(String[] args) {
    findAudioDevices();
    }//main
    public static void findAudioDevices() {
    / Audio capture devices /
    System.out.println("CAPTURE AUDIO FORMATS:");
    for (String format : audioformats) {
    System.out.println("format is :"format);
    Vector<CaptureDeviceInfo> devices = CaptureDeviceManager
    .getDeviceList(new AudioFormat(format));
    System.out.println("devices is"+devices);
    for (CaptureDeviceInfo device : devices) {
    if (!devices.isEmpty()) {
    System.out.println("\tFormat: " format);
    System.out.println("\t\t" device.getName());
    available_audiolist.add(format"|"+device.getName());
    System.out.println("list is :"+available_audiolist);
    Edited by: Saravana4u on Mar 17, 2010 10:39 AM

    almightywiz wrote:
    Well, I don't know if the JMF Studio works on a 64-bit system, but the base java libraries work just as well as on a 32-bit system. I currently use both Windows 7 64-bit and 32-bit version, and I am able to recognize all of my audio input devices.JMF wraps around and makes use of a bunch of native interfaces, all of which are precompiled for 32-bit systems. As such, anything relying upon those 32-bit libraries will not work, and that cuts the functionality down to, essentially, the cross-platform pack stuff.
    JMF's sound infastructure is mostly a wrapper around JavaSound, so as long as JavaSound is working on the JRE, you'll be able to utilize the audio functionality.
    As for device detection, I know at least some of that is native code. I'm not 100% sure, but I'd almost expect the Windows performance pack to never return any devices on a 64-bit system, but the cross-platform back to return audio devices. This is an assumption, but, that's what I would expect.
    In any case, if you're using the Windows performance pack, you'd most likely get better results by switching to the cross-platform pack.

  • How to capture the video in a file using JMF-RTP?

    Please someone help in capturing the live streaming in a file using JMF......
    Thanks..

    Hi, I have a problem with RTPExport output video files. One side streams H263/RTP(AVTransmit2.java) and other write this steam to a file by RTPExport.java. When network conditions are ideal, output video file has same fps and same number of frames like original file. Problem occures, when theres packet lost in network, then output file has different fps,and also has less frames like original video(because it didnt write missing frames to file, and thats why it get shorter). Pls how can I achieve output file that will have the same fps like original one? How to write to file an identical copy of what I can see while receiveing video with AVReceive2.java? Its there a way to modifi rtpexport or avreceiver to do this? Thanks!

  • Playing a wav file (byte array) using JMF

    Hi,
    I want to play a wav file in form of a byte array using JMF. I have 2 classes, MyDataSource and MyPullBufferStream. MyDataSource class is inherited from PullStreamDataSource, and MyPullBufferStream is derived from PullBufferStream. When I run the following piece of code, I got an error saying "EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x7c9108b2, pid=3800, tid=1111". Any idea what might be the problem? Thanks.
    File file = new File(filename);
    byte[] data = FileUtils.readFileToByteArray(file);
    MyDataSource ds = new MyDataSource(data);
    ds.connect();
    try
        player = Manager.createPlayer(ds);
    catch (NoPlayerException e)
        e.printStackTrace();
    if (player != null)
         this.filename = filename;
         JMFrame jmframe = new JMFrame(player, filename);
        desktop.add(jmframe);
    import java.io.IOException;
    import javax.media.Time;
    import javax.media.protocol.PullBufferDataSource;
    import javax.media.protocol.PullBufferStream;
    public class MyDataSource extends PullBufferDataSource
        protected Object[] controls = new Object[0];
        protected boolean started = false;
        protected String contentType = "raw";
        protected boolean connected = false;
        protected Time duration = DURATION_UNKNOWN;
        protected PullBufferStream[] streams = null;
        protected PullBufferStream stream = null;
        protected final byte[] data;
        public MyDataSource(final byte[] data)
            this.data = data;
        public String getContentType()
            if (!connected)
                System.err.println("Error: DataSource not connected");
                return null;
            return contentType;
        public void connect() throws IOException
            if (connected)
                return;
            stream = new MyPullBufferStream(data);
            streams = new MyPullBufferStream[1];
            streams[0] = this.stream;
            connected = true;
        public void disconnect()
            try
                if (started)
                    stop();
            catch (IOException e)
            connected = false;
        public void start() throws IOException
            // we need to throw error if connect() has not been called
            if (!connected)
                throw new java.lang.Error(
                        "DataSource must be connected before it can be started");
            if (started)
                return;
            started = true;
        public void stop() throws IOException
            if (!connected || !started)
                return;
            started = false;
        public Object[] getControls()
            return controls;
        public Object getControl(String controlType)
            try
                Class cls = Class.forName(controlType);
                Object cs[] = getControls();
                for (int i = 0; i < cs.length; i++)
                    if (cls.isInstance(cs))
    return cs[i];
    return null;
    catch (Exception e)
    // no such controlType or such control
    return null;
    public Time getDuration()
    return duration;
    public PullBufferStream[] getStreams()
    if (streams == null)
    streams = new MyPullBufferStream[1];
    stream = streams[0] = new MyPullBufferStream(data);
    return streams;
    import java.io.ByteArrayInputStream;
    import java.io.IOException;
    import javax.media.Buffer;
    import javax.media.Control;
    import javax.media.Format;
    import javax.media.format.AudioFormat;
    import javax.media.protocol.ContentDescriptor;
    import javax.media.protocol.PullBufferStream;
    public class MyPullBufferStream implements PullBufferStream
    private static final int BLOCK_SIZE = 500;
    protected final ContentDescriptor cd = new ContentDescriptor(ContentDescriptor.RAW);
    protected AudioFormat audioFormat = new AudioFormat(AudioFormat.GSM_MS, 8000.0, 8, 1,
    Format.NOT_SPECIFIED, AudioFormat.SIGNED, 8, Format.NOT_SPECIFIED,
    Format.byteArray);
    private int seqNo = 0;
    private final byte[] data;
    private final ByteArrayInputStream bais;
    protected Control[] controls = new Control[0];
    public MyPullBufferStream(final byte[] data)
    this.data = data;
    bais = new ByteArrayInputStream(data);
    public Format getFormat()
    return audioFormat;
    public void read(Buffer buffer) throws IOException
    synchronized (this)
    Object outdata = buffer.getData();
    if (outdata == null || !(outdata.getClass() == Format.byteArray)
    || ((byte[]) outdata).length < BLOCK_SIZE)
    outdata = new byte[BLOCK_SIZE];
    buffer.setData(outdata);
    byte[] data = (byte[])buffer.getData();
    int bytes = bais.read(data);
    buffer.setData(data);
    buffer.setFormat(audioFormat);
    buffer.setTimeStamp(System.currentTimeMillis());
    buffer.setSequenceNumber(seqNo);
    buffer.setLength(BLOCK_SIZE);
    buffer.setFlags(0);
    buffer.setHeader(null);
    seqNo++;
    public boolean willReadBlock()
    return bais.available() > 0;
    public boolean endOfStream()
    return willReadBlock();
    public ContentDescriptor getContentDescriptor()
    return cd;
    public long getContentLength()
    return (long)data.length;
    public Object getControl(String controlType)
    try
    Class cls = Class.forName(controlType);
    Object cs[] = getControls();
    for (int i = 0; i < cs.length; i++)
    if (cls.isInstance(cs[i]))
    return cs[i];
    return null;
    catch (Exception e)
    // no such controlType or such control
    return null;
    public Object[] getControls()
    return controls;

    Here's some additional information. After making the following changes to MyPullBufferStream class, I can play a wav file with gsm-ms encoding with one issue: the wav file is played many times faster.
    protected AudioFormat audioFormat = new AudioFormat(AudioFormat.GSM, 8000.0, 8, 1,
                Format.NOT_SPECIFIED, AudioFormat.SIGNED, 8, Format.NOT_SPECIFIED,
                Format.byteArray);
    // put the entire byte array into the buffer in one shot instead of
    // giving a portion of it multiple times
    public void read(Buffer buffer) throws IOException
            synchronized (this)
                Object outdata = buffer.getData();
                if (outdata == null || !(outdata.getClass() == Format.byteArray)
                        || ((byte[]) outdata).length < BLOCK_SIZE)
                    outdata = new byte[BLOCK_SIZE];
                    buffer.setData(outdata);
                buffer.setLength(this.data.length);
                buffer.setOffset(0);
                buffer.setFormat(audioFormat);
                buffer.setData(this.data);
                seqNo++;
        }

  • How to use jmf convert the rtp packet (captured by jpcap) in to wav file?

    I use the jpcap capture the rtp packets(payload: ITU-T G.711 PCMU ,from voip)
    and now I want to use JMF read those data and convert in to wav file
    How to do this? please help me

    pedrorp wrote:
    Hi Captfoss!
    I fixed it but now I have another problem. My application send me this message:
    Cannot initialize audio renderer with format: LINEAR, Unknown Sample Rate, 16-bit, Mono, LittleEndian, Signed
    Unable to handle format: ALAW/rtp, Unknown Sample Rate, 8-bit, Mono, FrameSize=8 bits
    Failed to prefetch: com.sun.media.PlaybackEngine@1b45ddc
    Error: Unable to prefetch com.sun.media.PlaybackEngine@1b45ddc
    This time the fail is prefetching. I have no idea why this problem is. Could you help me?The system cant play an audio file / stream if it doesn't know the sample rate...somewhere along the way, in your code, the sample rate got lost. Sample rates are highly important, because they tell the system how fast to play the file.
    You need to go look through your code and find where the sample rate information is getting lost...

  • Javafx use jmf and capture audio device

    Hello, I noticed a problem with the use JavaFX and Java Media Framework (JMF), in a project javafx call Java classes using JMF, but are not recognized PC audio devices, in fact when I executed 's the code CaptureDeviceManager.getDeviceList (null), displays the error: "could not commit protocolPRefixList", without recognizing any audio device. Instead I call if my application using JMF, outside of a JavaFX project, the devices are found and everything works properly, perhaps this problem depends on the security settings of JavaFX, or inability to use JavaFX is that jmf interfaces with audio and video devices?
    thanks for the help

    I'd use jmf and javafx but it was not for capture devices.
    If you use jmf there are native libraries.
    The thing i found was about the java.library.path wich is overriden when you start javafx that jmf can't load approriate libs.
    Try to compare the System.getProperties for java and javafx then you should find where is the problem.

  • Classpath problems with JMF

    Hi all,
    I'm trying to develop a simple application using JMF; I've problems importing classes from javax.media package. Problem with my application is that when I explicitly specify classpath as a command line argument to javac my application compiles; but if I use CLASSPATH environment variable it doesn't. Here's the output:
    situ@situ-desktop:~/myjava/media$ cat First.java
    import javax.media.*;
    public class First{
    situ@situ-desktop:~/myjava/media$ echo $CLASSPATH
    /home/situ/jmf/JMF-2.1.1e/lib/jmf.jar:/home/situ/jmf/JMF-2.1.1e/lib/sound.jar:.:
    situ@situ-desktop:~/myjava/media$ javac First.java
    First.java:1: package javax.media does not exist
    import javax.media.*;
    ^
    1 error
    situ@situ-desktop:~/myjava/media$ javac -classpath /home/situ/jmf/JMF-2.1.1e/lib/jmf.jar First.java
    situ@situ-desktop:~/myjava/media$
    Thanks.

    According to the documentation, it wants you to set two environmental variables, JMFHOME and CLASSPATH. And it wants the CLASSPATH to be relative to that JMFHOME variable.
    Try this.
    setenv JMFHOME /home/someuser/JMF2.1.1
    setenv CLASSPATH $JMFHOME/lib/jmf.jar:.:${CLASSPATH}

  • Packet sniffer only picks up UDP and no RTP packets when using JMF???

    Hi,
    I am developing a voice mail application to interface with asterisk. Here is the problem.
    I am using ethereal packet sniffer to sniff the packets. When I connect two regular SIP phones and sniff , I can sniff the RTP packets.
    But when I use JMF AVtransmit2.java and AVReceive2.java I sniff only UDP packets and no RTP packets.
    I am very confused. What is going on? If JMF sends over RTP (that uses UDP underneath), then why cannot packet sniffers detect it.

    Hi,
    I am developing a voice mail application to interface with asterisk. Here is the problem.
    I am using ethereal packet sniffer to sniff the packets. When I connect two regular SIP phones and sniff , I can sniff the RTP packets.
    But when I use JMF AVtransmit2.java and AVReceive2.java I sniff only UDP packets and no RTP packets.
    I am very confused. What is going on? If JMF sends over RTP (that uses UDP underneath), then why cannot packet sniffers detect it.

  • Use jmf implement RFC2833

    i want to send dtmf tone with my sip soft phone according to RFC 2833.
    but i don't kown how to modify some special rtp header(such as Marker header) when i use jmf to transmit rtp
    and i have another problem, i have already transmitted the rtp, and then i click one number button,it should send another rtp, how shoud i do if i want two rtp to be a stream, i mean the two rtps have the continuous sequence number, not have its own increased sequence number

    Hi,
    I�ve implemented DTMF (RFC 2833) using JMF during my SIP soft phone development. To implement DTMF (RFC 2833) using JMF, you have to implement RTPConnector. You will find an implementation of RTPConnector, RTPSocketAdapter is built to support a custom transport mechanism under following URL:
    [Transmitting and Receiving RTP over Custom Transport Layer|http://java.sun.com/javase/technologies/desktop/media/jmf/2.1.1/solutions/RTPConnector.html]
    I hope this information will help you!
    Enjoy,
    ARIF

  • Using JMF with JBuilder

    I was trying to use JMF with JBuilder 2005 but didnt know how to configure the libraries. I asked many people but no one could help me. I just found a web site about this problem so i would like to share it with those who are facing the same problem. hope it will help.
    check http://www.computer-logic.net/javafaq/JFAQ_MediaFiles.htm

    put the two jar files,jdom jar and xerces.jar files into the resourec in jbuilder.sorry if i am not clear in the answer.
    cheers

  • How to make jar file of application using JMF

    Hi
    i developed an application which uses JMF it works well during compilation and displays audio and video too.
    but after builting jar file it doesn't works.
    abdul

    Well you've found the root of your problem. It's not necessary the JMF. It's when you make a jar file, you need to include the dependencies. I don't think it' legal to include the JMF in a program you sell or distribute, so be careful there.
    However, to include dependencies in jar files is not a hard task. The simplest method is to unjar the dependency and place it at the top or your classpath; then make a jar that includes both your program, and the dependency.
    A more long term solution is to use a build system such as ant or maven to create the package using available scripts or plugins. The "Uberjar" plugin for maven comes to mind.
    -vito

  • Source code for audio- video conferencing using JMF

    i am doing a project on VIDEO CONFERNCING using JMF. i am using the HP WEBCAM of my laptop. guys i desperately need help. plz give me the code if any of has it.plz plz its urgent

    i am doing a project on VIDEO CONFERNCING using JMF. i am using the HP WEBCAM of my laptop. guys i desperately need help. plz give me the code if any of has it.plz plz its urgentYou can't get the code for the whole application.....
    but you can get plenty of code to get started on making your own video conf. application using JMF here .
    Also, there is a [JMF Forum|http://forums.sun.com/forum.jspa?forumID=28] here. If you face any problems while coding, you can post your queries there.
    Thanks!

Maybe you are looking for

  • Install fails with error -Premiere Elements 12  US

    Error 1326.Error getting file security: C:\ProgramData\Adobe\Photoshop Elements\Catalogs\ GetLastError: 5 Ran Norton 360 Registry Cleaner, re-booted machine Same error Ran loganalyzer but I cannot determine problem Win 8.1 64bit 8GB RAM   Elements 10

  • Error in installing iTunes 7.6

    I try to install the 7.6 version of iTunes and get an error code number 2738 during the QuickTime install and,later on after I hit OK to acknowledge the error message, that I need to reregister VBScript. I don't know how to reregister VBScript, nor d

  • I'm on the fence and need help, please.

    My service contract is up and I'm ready to get a new phone.  I want a touch screen phone with no data plan and I'm turn between the Lg cosmos touch and the KIN 2m.  I have seen a lot of mixed reviews on the 2m and mostly positive reviews for the cosm

  • How to include custom taglib in javascript on a given jsp page

    Hi, How to include custom taglib in javascript on a given jsp page? i have a jsp page on which i am adding selectboxes using javascript. But now i have created my own custom select box and want to add it on a given jsp page. is the code to create the

  • Maximum line items that RFQ can have?

    Hello folks, Can anyone provide information on how many line items we can have in RFQ? I have a scenario with 10K line items.Any inputs on how it can be customized or if anyone has faced such a situation and has a workaround? Regards Sanjeev