Capturing from Webcam?

Hello,
I am trying to find the best approach to capture frames from a color webcam. And access the pixel array of each frame, then change these in someway.
I thought it might be best to use the JMF Processor, and in the Process method access the frame pixel array using getData() on the Buffer in/out.
And wondered if anyone had an example code of using a webcam and the Processor object?
And if anyone could advise if the byte[] array returned from the getData() method, the pixels in this byte array would automically be in a RGB format because webcam is color? Or could be pixels be in a GBR or ARGB format?
Thank you

Thanks
In this example they seem to use a player object rather than processor, and I think the processor's, process method is a quicker method to access the pixels than using a bufferedimage.

Similar Messages

  • Capture from Webcam using avicap32.d​ll

    Is there any sample LabVIEW Program for capturing image or recording video from USB webcamera using WIN32 API's from avicap32.dll without need of having IMAQ Vision?
    Thanks in advance for your help.

    Sowji,
    Though there is no direct example for using that particular dll, there are many examples that can be found by using the LabVIEW help, especially using the help >> Find Examples... and searching for DLL.  Even using the help and searching for call library function node will return many useful articles on using the call library function node.  Also, there are more articles on ni.com.  A search on our website for "external dll" or "using dlls" returned a couple of interesting articles that you may want to peruse.
    External Code for LabVIEW - CIN / DLL - Starting Point
    Using External Code in LabVIEW
    Also, a search on Google returned a page describing some of the functions of the avicap32.dll that will be useful.
    CAviCap and CFrameGrabber - wrappers for AVICap Window
    I hope this is usefull.  I think that after looking through these resources, you should have a good base to use this DLL with LabVIEW.  Have a great day.
    Brian Coalson
    Software Engineer
    National Instruments

  • Unable to capture video from webcam in JMF in xlet

    hi
    I am unable to capture video from webcam in an Xlet. I am using Xletview to run Xlet. The method CaptureDeviceManager.getDeviceList(vidformat) returns empty array. Which videoformat should I use and why do I get empty array?
    Thanks
    Rajesh

    MHP and OCAP only use JMF 1.0, which does not include support for capturing video. You will not be able to do this in any current MHP/OCAP imlementation that I know of.
    Steve.

  • Unable to capture video from webcam in JMF

    hi
    I am unable to capture video from webcam in an Xlet. I am using Xletview to run Xlet. The method CaptureDeviceManager.getDeviceList(vidformat) returns empty array. Which videoformat should I use and why do I get empty array?

    MHP and OCAP only use JMF 1.0, which does not include support for capturing video. You will not be able to do this in any current MHP/OCAP imlementation that I know of.
    Steve.

  • Simply capture raster image from webcam or camera

    Hello everybody!
    First, thanks to all for all the good ideas I've read on this forum!
    I would like to capture images (raster type) from an external device (webcam, camera...) to apply particular processing on them. I would not like to lose time extracting these rasters... in a way to focus on my postprocessing stage. Does anybody know the simplest way to do this? JMStudio? but how?
    Thanks a lot!!!

    Hi...
    Could you not just use the Java Media Framework API to do an image capture from the webcam?
    http://java.sun.com/dev/evangcentral/totallytech/jmf.html

  • Transmiting video captured from a webcam to another system through internet

    Hi there, I developed an application catch video stream from the webcam and transmit it another system within LAN network , I would like know possibility to senting it over internet to another system?? is it possible sent this streams to more than one location simultaneously. Any idea?
    Best regards
    anoop

    hi tony
    Thank you very much for reply, I very appreciate this.for tansnsmitting video using rtp protocol we need to specify the network output for media transmission(ie Medialocator).what i mean is we need to create a medialocator specifing the destination of our broadcast. which look like a typical url rtp://address:port/content-type ,here the address is the address to which video must be tansmitted.to transmit in unicast mode this address should be the address of the intended machine.its working fine.to transmit in mulitcast mode with a subnet we can do this by replacing 255 with last field of the address part.it also working fine within subnet so that we can display video captured from one cam to multiple destination
    ** this is the real problem whcih i m facing now is how to make it to work in internet? to mutliple destination? whether i need to create multiple medialocator url??? anybody have any idea? plz help thanking u in advance?
    anoop

  • Save the capture from a WebCam to a file

    Hi!
    I am trying to save the capture from a webcam to a file. This should be really easy but I have this stack trace when closing the Processor:
    java.lang.NullPointerException
         at com.sun.media.multiplexer.video.AVIMux.writeFooter(AVIMux.java:827)
         at com.sun.media.multiplexer.BasicMux.close(BasicMux.java:142)
         at com.sun.media.BasicMuxModule.doClose(BasicMuxModule.java:172)
         at com.sun.media.PlaybackEngine.doClose(PlaybackEngine.java:872)
         at com.sun.media.BasicController.close(BasicController.java:261)
         at com.sun.media.BasicPlayer.doClose(BasicPlayer.java:229)
         at com.sun.media.BasicController.close(BasicController.java:261)
         at com.mdarveau.WebCamGrabber.TestWebCam.<init>(TestWebCam.java:47)
         at com.mdarveau.WebCamGrabber.TestWebCam.main(TestWebCam.java:59)Any idea why? It is probably something stupid in my code but I can't find it!
    Here is the code:
        //Get the original source
        CaptureDeviceInfo webCam = CaptureDeviceManager.getDevice("vfw:Video Blaster WebCam 3/WebCam Plus (VFW):1");
        DataSource cam = Manager.createDataSource(webCam.getLocator());
        cam.connect();
        Format [] formats = {new VideoFormat(null) };
        FileTypeDescriptor ftd = new FileTypeDescriptor("video.x_msvideo");
        ProcessorModel pm = new ProcessorModel(cam, formats, ftd);
        Processor p = Manager.createRealizedProcessor(pm);
        MediaLocator save = new MediaLocator("file:test.avi");
        DataSink datasink = Manager.createDataSink(p.getDataOutput(), save);
        datasink.open();
        datasink.start();
        Thread.sleep(5000);
        p.stop();
        p.close();
        datasink.close();Thanks!
    Manuel Darveau

    I think you should start the processor, just after the datasink is started.
    datasink.satrt();
    p.start();
    Try it and ask again if it's not the problem.

  • Urgent: Unable to capture from TV Capture Card

    Hello,
    I'm Ashish Shukla. I'm writing an application in JMF 2.1.1b using J2SE 1.4.0 on Win32 platform on Intel Celeron 1 GHz processor which captures from the capture device. It works fine on Intel Create & Share CS110 Web Camera. But now, I'm try to capture from the TV Capture Card Pinnacle Studio PCTV TV Capture Card (Composite Video).
    But JMF Registry is not able to detect the TV Capture Card (connected alone) & my PC hangs. But, when WebCamera is plugged in, JMF Registry detects it.
    When Both WebCamera (USB port) & TV Capture Card are plugged in, then JMF Registry detects only Web Camera.
    If anyone can help me resolve the problem. I'm very thankful.
    Yours sincerley,
    Ashish Shukla
    Wah Java!!

    Dear friend
    I have a similar problem, did you got the answer...
    I m trying to get video from the video capture card first from video then for composite then for ..... each port ... but it looks not to be easy ...
    c u
    Thanks
    [email protected]

  • Image capture from avi vfw device can't find video modes

    Hello
    Here my issu, i have implemented image capture from a video device using jmf 2.1.1e performancepack, using a webcam everything is fine but when i use the video capture source i want to use i can only work with format 720x480 pal and i require 720x576 pal.
    jmf seem not to reconize video format from this source, but the video is correcty displayed and image correctly captured. I'm surprised it is half working:decoding&render is ok to but not format choice.
    I have check it is not because i'm in ntsc mode (ntsc is 720x480) because my analogic source is pal and color are correct (if with device software i change to ntsc mode i have a black&with but using jmf i'm in color so i'm in pal mode)
    Difference bettween the webcam and my device is that my device is an avi encoder so in jmf webcam is javax.media.format.YUVFormat and my device com.sun.media.format.AviVideoFormat
    i have tried many thing:
    install codec pack (divx6, another codec pack)
    try to use Fobs4JMF
    register in JMStudio IBMdecoder, jffmpeg
    Tanks for any help
    the device support many configuration UYVY 235x288 352x576 .... 720x576 but JMF offer only 1 video mode for this device.
    here in jmf my capture device info:
    Name = vfw:Microsoft WDM Image Capture (Win32):0
    Locator = vfw://0
    Output Formats---->
    0. com.sun.media.format.AviVideoFormat
    UYVY, 720x480, Length=691200 0 extra bytes
    and with a web cam:
    Name = vfw:Microsoft WDM Image Capture (Win32):0
    Locator = vfw://0
    Output Formats---->
    0. javax.media.format.YUVFormat
    YUV Video Format: Size = java.awt.Dimension[width=640,height=480] MaxDataLength = 460800 DataType = class [B yuvType = 2 StrideY = 640 StrideUV = 320 OffsetY = 0 OffsetU = 307200 OffsetV = 384000
    1. javax.media.format.RGBFormat
      RGB, 160x120, Length=57600, 24-bit, Masks=3:2:1, PixelStride=3, LineStride=480, Flipped
    2. javax.media.format.RGBFormat
      RGB, 176x144, Length=76032, 24-bit, Masks=3:2:1, PixelStride=3, LineStride=528, Flipped
    3. javax.media.format.RGBFormat
      RGB, 320x240, Length=230400, 24-bit, Masks=3:2:1, PixelStride=3, LineStride=960, Flipped
    4. javax.media.format.RGBFormat
      RGB, 352x288, Length=304128, 24-bit, Masks=3:2:1, PixelStride=3, LineStride=1056, Flipped
    5. javax.media.format.RGBFormat
      RGB, 640x480, Length=921600, 24-bit, Masks=3:2:1, PixelStride=3, LineStride=1920, Flipped
    6. javax.media.format.YUVFormat
      YUV Video Format: Size = java.awt.Dimension[width=160,height=120] MaxDataLength = 28800 DataType = class [B yuvType = 2 StrideY = 160 StrideUV = 80 OffsetY = 0 OffsetU = 19200 OffsetV = 24000
    7. javax.media.format.YUVFormat
      YUV Video Format: Size = java.awt.Dimension[width=176,height=144] MaxDataLength = 38016 DataType = class [B yuvType = 2 StrideY = 176 StrideUV = 88 OffsetY = 0 OffsetU = 25344 OffsetV = 31680
    8. javax.media.format.YUVFormat
      YUV Video Format: Size = java.awt.Dimension[width=320,height=240] MaxDataLength = 115200 DataType = class [B yuvType = 2 StrideY = 320 StrideUV = 160 OffsetY = 0 OffsetU = 76800 OffsetV = 96000
    9. javax.media.format.YUVFormat
      YUV Video Format: Size = java.awt.Dimension[width=352,height=288] MaxDataLength = 152064 DataType = class [B yuvType = 2 StrideY = 352 StrideUV = 176 OffsetY = 0 OffsetU = 101376 OffsetV = 126720[/i]

    I have find some information at l'article http://archives.java.sun.com/cgi-bin/wa?A2=ind0111&L=jmf-interest&P=22779
    but i didn't find "sample programs on the JMF Solutions page" which is about VFWDeviceQuery
    so i have trouble with point 2 so this article.
    I have try to rewrite VFWDeviceQuery:
    i just have add dimension 720x576 and "UYVY" in the variable declaration, then compile and replace VFWDeviceQuery .java in jmf.jar in but it is not working)
    I miss information on what to do on VFWDeviceQuery to try more
    About jmf soucre file, i have used the source file jmf-2_1_1e-scsl-src but i have some package missing such as com.ibm.media.codec.audio.BufferedEncoder ...
    so i can't use debugger on all jmf package and check how VFWDeviceQuery is working.
    if someone have information about please help me:
    - "sample programs on the JMF Solutions page" about VFWDeviceQuery
    - how to rewrite VFWDeviceQuery to support UYVY
    - how to compile entier jmf source files
    V.

  • How to send the image bytes(which is taken from webcam) from flex(4.6 version) to dotnet

    In my project we are using adobe flash builder 4.6 as a client-side scripting,visual studio as a mediator(for connecting the oracle database).In this, in flex 4.6 we are capturing images from webcam that's working fine, after capturing the image we need to save this captured image in oracle database so in order to save we need to pass this image from flex to dot-net(visual studio) so i need a help on how to approach to done this(passing the image from flex to dot-net) if any one knows please help me i will be very thankful to them

    finally i got the solution fot this,i tried using yhis link it work's for me
    http://stackoverflow.com/questions/5702239/how-to-pass-image-from-a-flex-application-to-a- asp-net-c-sharp-web-service

  • SunVideoPlus: capture from both ports simultaneously

    Hi all,
    Is it possible to capture from both ports of a SunVideoPlus capture board simultaneously?
    I have successfully created 2 frames, each for a media locator sunvideoplus://0/1 and sunvideoplus://0/2. When starting the capture, a video stream appears in one of the frames. The other displays a snapshot of the same stream. This makes me believe that only one port can be used at any one point.
    Alternatively, has anyone worked with switching between ports at some high frequency, e.g. every 1/15 seconds or every second?
    Thanks.
    - Alex

    I've got a similar problem in which I would like to process multiple streams from several webcams at once. I'm getting this popup thingy to choose the stream, but I would like java to be able to handle it.
    Any idea?
    Sorry no answer to your question, just another question :-)

  • View video from webcam while transmitting

    Hi everyone, when I try to use AVTransmit3.java and Clone.java (example from sun) to see video from webcam while transmitting, an error occur:
    {color:#ff0000}+java.lang.NullPointerException+
    at com.sun.media.codec.video.colorspace.RGBConverter.process(RGBConverter.java:352)
    at com.sun.media.BasicFilterModule.process(BasicFilterModule.java:322)
    at com.sun.media.BasicModule.connectorPushed(BasicModule.java:69)
    at com.sun.media.BasicOutputConnector.writeReport(BasicOutputConnector.java:120)
    at com.sun.media.SourceThread.process(BasicSourceModule.java:655)
    at com.sun.media.util.LoopThread.run(LoopThread.java:135){color}
    So I'm only able to see in local my captured video, but cannot transmit.
    I try to debug JMStudio to find how to do this(monitoring transmitted video), but I'm not able to debug it.
    In method private String createProcessor() of AVTransmit3.java I added
    //----------------------------------------------------Start
                clone = Manager.createCloneableDataSource(ds);
                if (clone == null) {
                    System.err.println("Cannot clone the given DataSource");
                    System.exit(0);
                Clone cloneV = new Clone();
                if (!cloneV.open(clone))
                    System.exit(0);             
    //----------------------------------------------------End       
         return null;
        }This is the clone.java from sun
    /* Clone.java
    * To change this template, choose Tools | Templates
    * and open the template in the editor.
    *import java.awt.*;
    import javax.media.*;
    import javax.media.protocol.DataSource;
    public class Clone extends Frame implements ControllerListener {
        Player p;
        Object waitSync = new Object();
        boolean stateTransitionOK = true;
         * Given a DataSource, create a player and use that player
         * as a player to playback the media.
        public boolean open(DataSource ds) {
         System.err.println("create player for: " + ds.getContentType());
         try {
             p = Manager.createPlayer(ds);
         } catch (Exception e) {
             System.err.println("Failed to create a player from the given DataSource: " + e);
             return false;
         p.addControllerListener(this);
         // Realize the player.
         p.prefetch();
         if (!waitForState(p.Prefetched)) {
             System.err.println("Failed to realize the player.");
             return false;
         // Display the visual & control component if there's one.
         setLayout(new BorderLayout());
    //     Component cc;
         Component vc;
         if ((vc = p.getVisualComponent()) != null) {
                vc.setSize(176, 144);
             add("Center", vc);
    //     if ((cc = p.getControlPanelComponent()) != null) {
    //         add("South", cc);
         // Start the player.
         p.start();
            this.setSize(176, 144);
         setVisible(true);
         return true;
        public void addNotify() {
         super.addNotify();
         pack();
         * Block until the player has transitioned to the given state.
         * Return false if the transition failed.
        boolean waitForState(int state) {
         synchronized (waitSync) {
             try {
              while (p.getState() < state && stateTransitionOK)
                  waitSync.wait();
             } catch (Exception e) {}
         return stateTransitionOK;
         * Controller Listener.
        public void controllerUpdate(ControllerEvent evt) {
         if (evt instanceof ConfigureCompleteEvent ||
             evt instanceof RealizeCompleteEvent ||
             evt instanceof PrefetchCompleteEvent) {
             synchronized (waitSync) {
              stateTransitionOK = true;
              waitSync.notifyAll();
         } else if (evt instanceof ResourceUnavailableEvent) {
             synchronized (waitSync) {
              stateTransitionOK = false;
              waitSync.notifyAll();
         } else if (evt instanceof EndOfMediaEvent) {
             p.close();
             //System.exit(0);
         } else if (evt instanceof SizeChangeEvent) {
    }Please can you tell me what is wrong?
    thank you in advance

    I post all the class I use in this project.
    Copy and create your own project (SERVER side)
    Then on other pc (CLIENT side) run JMStudio and open RTP transmission: you will receive data but on server you will have a black window.
    I've modified only AVtransmit3.java -> look at Main() and modify dest-ip and port.
    JFrameMain is a class with a button to close the application.
    * @(#)AVTransmit3.java     1.2 01/03/13
    * Copyright (c) 1999-2001 Sun Microsystems, Inc. All Rights Reserved.
    * Sun grants you ("Licensee") a non-exclusive, royalty free, license to use,
    * modify and redistribute this software in source and binary code form,
    * provided that i) this copyright notice and license appear on all copies of
    * the software; and ii) Licensee does not utilize the software in a manner
    * which is disparaging to Sun.
    * This software is provided "AS IS," without a warranty of any kind. ALL
    * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, INCLUDING ANY
    * IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR
    * NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN AND ITS LICENSORS SHALL NOT BE
    * LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING
    * OR DISTRIBUTING THE SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR ITS
    * LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR DIRECT,
    * INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER
    * CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF THE USE OF
    * OR INABILITY TO USE SOFTWARE, EVEN IF SUN HAS BEEN ADVISED OF THE
    * POSSIBILITY OF SUCH DAMAGES.
    * This software is not designed or intended for use in on-line control of
    * aircraft, air traffic, aircraft navigation or aircraft communications; or in
    * the design, construction, operation or maintenance of any nuclear
    * facility. Licensee represents and warrants that it will not use or
    * redistribute the Software for such purposes.
    import java.awt.*;
    import java.io.*;
    import java.net.InetAddress;
    import java.util.logging.Level;
    import java.util.logging.Logger;
    import javax.media.*;
    import javax.media.protocol.*;
    import javax.media.protocol.DataSource;
    import javax.media.format.*;
    import javax.media.control.TrackControl;
    import javax.media.control.QualityControl;
    import javax.media.rtp.*;
    import javax.media.rtp.rtcp.*;
    import com.sun.media.rtp.*;
    import java.util.Vector;
    public class AVTransmit3 {
        // Input MediaLocator
        // Can be a file or http or capture source
        private MediaLocator locator;
        private String ipAddress;
        private int portBase;
        private Processor processor = null;
        private RTPManager rtpMgrs[];
        private DataSource dataOutput = null;
        private static boolean v = false;  
         private static DataSource ds = null;
            private static DataSource clone;
         private static DataSource cloned;       
        private String VFORMAT = "h263/rtp";   
        private String AFORMAT = "mpegaudio/rtp";   
        public AVTransmit3(MediaLocator locator,
                    String ipAddress,
                    String pb,
                    Format format) {
         this.locator = locator;
         this.ipAddress = ipAddress;
         Integer integer = Integer.valueOf(pb);
         if (integer != null)
             this.portBase = integer.intValue();
         * Starts the transmission. Returns null if transmission started ok.
         * Otherwise it returns a string with the reason why the setup failed.
        public synchronized String start() {
         String result;
         // Create a processor for the specified media locator
         // and program it to output JPEG/RTP
         result = createProcessor();
         if (result != null)
             return result;
         // Create an RTP session to transmit the output of the
         // processor to the specified IP address and port no.
         result = createTransmitter();
         if (result != null) {
             processor.close();
             processor = null;
             return result;
         // Start the transmission
         processor.start();
         return null;
         * Stops the transmission if already started
        public void stop() {
         synchronized (this) {
             if (processor != null) {
              processor.stop();
              processor.close();
              processor = null;
              for (int i = 0; i < rtpMgrs.length; i++) {
                  rtpMgrs.removeTargets( "Session ended.");
              rtpMgrs[i].dispose();
    private String createProcessor() {
         if (locator == null)
         return "Locator is null";
         try {
         ds = javax.media.Manager.createDataSource(locator);
         } catch (Exception e) {
         return "Couldn't create DataSource";
         // Try to create a processor to handle the input media locator
         try {
         processor = javax.media.Manager.createProcessor(ds);
         } catch (NoProcessorException npe) {
         return "Couldn't create processor";
         } catch (IOException ioe) {
         return "IOException creating processor";
         // Wait for it to configure
         boolean result = waitForState(processor, Processor.Configured);
         if (result == false)
         return "Couldn't configure processor";
         // Get the tracks from the processor
         TrackControl [] tracks = processor.getTrackControls();
         // Do we have atleast one track?
         if (tracks == null || tracks.length < 1)
         return "Couldn't find tracks in processor";
         // Set the output content descriptor to RAW_RTP
         // This will limit the supported formats reported from
         // Track.getSupportedFormats to only valid RTP formats.
         ContentDescriptor cd = new ContentDescriptor(ContentDescriptor.RAW_RTP);
         processor.setContentDescriptor(cd);
         Format supported[];
         Format chosen = null;
         boolean atLeastOneTrack = false;
         // Program the tracks.
         for (int i = 0; i < tracks.length; i++)
    AudioFormat aFormat = new AudioFormat(AFORMAT, 22050.00, 16, 1);
         Format format = tracks[i].getFormat();
         if (tracks[i].isEnabled())
              supported = tracks[i].getSupportedFormats();
              // We've set the output content to the RAW_RTP.
              // So all the supported formats should work with RTP.
              // We'll just pick the first one.
              if (supported.length > 0)
    for(int k = 0; k < supported.length; k++)
    if ((supported[k] instanceof VideoFormat) &&
    (supported[k].getEncoding().equalsIgnoreCase(VFORMAT)))
    // For video formats, we should double check the
    // sizes since not all formats work in all sizes.
    // Choose the H263rtp
    chosen = checkForVideoSizes(tracks[i].getFormat(), supported[k]);
    v = true;
    break;
    else if ((supported[k] instanceof AudioFormat) &&
    (supported[k].matches(aFormat)))
    // For audio formats
    // Choose the H263rtp
    // chosen = supported[3];
    chosen = supported[k];
    v = false;
    break;
              tracks[i].setFormat(chosen);
              System.err.println("Track " + i + " is set to transmit as:");
              System.err.println(" " + chosen);
              atLeastOneTrack = true;
              } else
              tracks[i].setEnabled(false);
         } else
              tracks[i].setEnabled(false);
         if (!atLeastOneTrack)
         return "Couldn't set any of the tracks to a valid RTP format";
         // Realize the processor. This will internally create a flow
         // graph and attempt to create an output datasource for JPEG/RTP
         // audio frames.
         result = waitForState(processor, Controller.Realized);
         if (result == false)
         return "Couldn't realize processor";
         // Set the JPEG quality to .5.
         setJPEGQuality(processor, 0.5f);
         // Get the output data source of the processor
         dataOutput = processor.getDataOutput();
         return null;
    * Use the RTPManager API to create sessions for each media
    * track of the processor.
    private String createTransmitter() {
         // Cheated. Should have checked the type.
         PushBufferDataSource pbds = (PushBufferDataSource)dataOutput;
         PushBufferStream pbss[] = pbds.getStreams();
         rtpMgrs = new RTPManager[pbss.length];
         SendStream sendStream;
         int port;
         SourceDescription srcDesList[];
         for (int i = 0; i < pbss.length; i++) {
         try {
              rtpMgrs[i] = RTPManager.newInstance();     
              port = portBase + 2*i;
              // Initialize the RTPManager with the RTPSocketAdapter
              rtpMgrs[i].initialize(new RTPSocketAdapter(
                             InetAddress.getByName(ipAddress),
                             port));
              System.err.println( "Created RTP session: " + ipAddress + " " + port);
              sendStream = rtpMgrs[i].createSendStream(dataOutput, i);          
              sendStream.start();
         } catch (Exception e) {
              return e.getMessage();
         return null;
    * For JPEG and H263, we know that they only work for particular
    * sizes. So we'll perform extra checking here to make sure they
    * are of the right sizes.
    Format checkForVideoSizes(Format original, Format supported) {
         int width, height;
         Dimension size = ((VideoFormat)original).getSize();
         Format jpegFmt = new Format(VideoFormat.JPEG_RTP);
         Format h263Fmt = new Format(VideoFormat.H263_RTP);
         if (supported.matches(jpegFmt)) {
         // For JPEG, make sure width and height are divisible by 8.
         width = (size.width % 8 == 0 ? size.width :
                        (int)(size.width / 8) * 8);
         height = (size.height % 8 == 0 ? size.height :
                        (int)(size.height / 8) * 8);
         } else if (supported.matches(h263Fmt)) {
         // For H.263, we only support some specific sizes.
         if (size.width < 128) {
              width = 128;
              height = 96;
         } else if (size.width < 176) {
              width = 176;
              height = 144;
         } else {
    ///mod          width = 352;
    width = 176;
    ///mod          height = 288;
    height = 144;
         } else {
         // We don't know this particular format. We'll just
         // leave it alone then.
         return supported;
         return (new VideoFormat(null,
                        new Dimension(width, height),
                        Format.NOT_SPECIFIED,
                        null,
                        Format.NOT_SPECIFIED)).intersects(supported);
    * Setting the encoding quality to the specified value on the JPEG encoder.
    * 0.5 is a good default.
    void setJPEGQuality(Player p, float val) {
         Control cs[] = p.getControls();
         QualityControl qc = null;
         VideoFormat jpegFmt = new VideoFormat(VideoFormat.JPEG);
         // Loop through the controls to find the Quality control for
         // the JPEG encoder.
         for (int i = 0; i < cs.length; i++) {
         if (cs[i] instanceof QualityControl &&
              cs[i] instanceof Owned) {
              Object owner = ((Owned)cs[i]).getOwner();
              // Check to see if the owner is a Codec.
              // Then check for the output format.
              if (owner instanceof Codec) {
              Format fmts[] = ((Codec)owner).getSupportedOutputFormats(null);
              for (int j = 0; j < fmts.length; j++) {
                   if (fmts[j].matches(jpegFmt)) {
                   qc = (QualityControl)cs[i];
                   qc.setQuality(val);
                   System.err.println("- Setting quality to " +
                             val + " on " + qc);
                   break;
              if (qc != null)
              break;
    * Convenience methods to handle processor's state changes.
    private Integer stateLock = new Integer(0);
    private boolean failed = false;
    Integer getStateLock() {
         return stateLock;
    void setFailed() {
         failed = true;
    private synchronized boolean waitForState(Processor p, int state) {
         p.addControllerListener(new StateListener());
         failed = false;
         // Call the required method on the processor
         if (state == Processor.Configured) {
         p.configure();
         } else if (state == Processor.Realized) {
         p.realize();
         // Wait until we get an event that confirms the
         // success of the method, or a failure event.
         // See StateListener inner class
         while (p.getState() < state && !failed) {
         synchronized (getStateLock()) {
              try {
              getStateLock().wait();
              } catch (InterruptedException ie) {
              return false;
         if (failed)
         return false;
         else
         return true;
    * Inner Classes
    class StateListener implements ControllerListener {
         public void controllerUpdate(ControllerEvent ce) {
         // If there was an error during configure or
         // realize, the processor will be closed
         if (ce instanceof ControllerClosedEvent)
              setFailed();
         // All controller events, send a notification
         // to the waiting thread in waitForState method.
         if (ce instanceof ControllerEvent) {
              synchronized (getStateLock()) {
              getStateLock().notifyAll();
    * Sample Usage for AVTransmit3 class
    public static void main(String [] args) {
         Format fmt = null;
         int i = 0;
    String title = "Video";
    AVTransmit3 at = new AVTransmit3(new MediaLocator("vfw://0"),
                             "192.168.0.5", "44350", fmt);
    //View GUI
    JFrameMain jfm = new JFrameMain(at);
    jfm.setVisible(true);
    jfm.setTitle(title);
    if(title.equals("Video"))
    jfm.setLocation(jfm.getX()+180, jfm.getY());
         // Start the transmission
         String result = at.start();
         // result will be non-null if there was an error. The return
         // value is a String describing the possible error. Print it.
         if (result != null) {
         System.err.println("Error : " + result);
         System.exit(0);
         System.err.println("Start transmission...");
    try {
    Thread.sleep(2000);
    } catch (InterruptedException ex) {
    Logger.getLogger(AVTransmit3.class.getName()).log(Level.SEVERE, null, ex);
    if(v)
    //----------------------------------------------------Start
    /* Get a clonable version of our datasource */
    clone = Manager.createCloneableDataSource(ds);
    /* Make sure we got a clonable version before we try to clone it */
    if (clone == null) {
    System.err.println("Cannot get a clonable version of the datasource");
    System.exit(0);
    /* Create the clone of our original datasource */
    DataSource dsClone = ((SourceCloneable)clone).createClone();
    /* Make our DS variable a clone too */
    ds = ((SourceCloneable)clone).createClone();
    /* Make sure the clone happened successfully */
    if (dsClone == null) {
    System.err.println("Could not clone our datasource");
    System.exit(0);
    /* Make sure the clone happened successfully */
    if (ds == null) {
    System.err.println("Could not clone our datasource");
    System.exit(0);
    /* Create a new Clone class */
    Clone cloneV = new Clone();
    /* Open our clone class with our datasource clone */
    if (! cloneV.open(dsClone))
    System.exit(0);
    //----------------------------------------------------End
    /* Clone.java
    * To change this template, choose Tools | Templates
    * and open the template in the editor.
    import java.awt.*;
    import javax.media.*;
    import javax.media.protocol.DataSource;
    public class Clone extends Frame implements ControllerListener {
    Player p;
    Object waitSync = new Object();
    boolean stateTransitionOK = true;
    * Given a DataSource, create a player and use that player
    * as a player to playback the media.
    public boolean open(DataSource ds) {
         System.err.println("create player for: " + ds.getContentType());
         try {
         p = Manager.createPlayer(ds);
         } catch (Exception e) {
         System.err.println("Failed to create a player from the given DataSource: " + e);
         return false;
         p.addControllerListener(this);
         // Realize the player.
         p.prefetch();
         if (!waitForState(p.Prefetched)) {
         System.err.println("Failed to realize the player.");
         return false;
         // Display the visual & control component if there's one.
         setLayout(new BorderLayout());
    //     Component cc;
         Component vc;
         if ((vc = p.getVisualComponent()) != null) {
    vc.setSize(176, 144);
         add("Center", vc);
    //     if ((cc = p.getControlPanelComponent()) != null) {
    //     add("South", cc);
         // Start the player.
         p.start();
    this.setSize(176, 144);
         setVisible(true);
         return true;
    public void addNotify() {
         super.addNotify();
         pack();
    * Block until the player has transitioned to the given state.
    * Return false if the transition failed.
    boolean waitForState(int state) {
         synchronized (waitSync) {
         try {
              while (p.getState() < state && stateTransitionOK)
              waitSync.wait();
         } catch (Exception e) {}
         return stateTransitionOK;
    * Controller Listener.
    public void controllerUpdate(ControllerEvent evt) {
         if (evt instanceof ConfigureCompleteEvent ||
         evt instanceof RealizeCompleteEvent ||
         evt instanceof PrefetchCompleteEvent) {
         synchronized (waitSync) {
              stateTransitionOK = true;
              waitSync.notifyAll();
         } else if (evt instanceof ResourceUnavailableEvent) {
         synchronized (waitSync) {
              stateTransitionOK = false;
              waitSync.notifyAll();
         } else if (evt instanceof EndOfMediaEvent) {
         p.close();
         //System.exit(0);
         } else if (evt instanceof SizeChangeEvent) {
    * JFrameMain.java
    * Created on 23 maggio 2008, 17.28
    * @author Giovanni
    public class JFrameMain extends javax.swing.JFrame {
    /** Creates new form JFrameMain */
    public JFrameMain(AVTransmit3 avt) {
    avTransmit = avt;
    initComponents();
    /** This method is called from within the constructor to
    * initialize the form.
    * WARNING: Do NOT modify this code. The content of this method is
    * always regenerated by the Form Editor.
    // <editor-fold defaultstate="collapsed" desc="Generated Code">
    private void initComponents() {
    jButtonFine = new javax.swing.JButton();
    setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
    setResizable(false);
    jButtonFine.setText("Fine Trasmissione");
    jButtonFine.addMouseListener(new java.awt.event.MouseAdapter() {
    public void mousePressed(java.awt.event.MouseEvent evt) {
    jButtonFineMousePressed(evt);
    javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
    getContentPane().setLayout(layout);
    layout.setHorizontalGroup(
    layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
    .addGroup(layout.createSequentialGroup()
    .addContainerGap()
    .addComponent(jButtonFine, javax.swing.GroupLayout.DEFAULT_SIZE, 124, Short.MAX_VALUE)
    .addContainerGap())
    layout.setVerticalGroup(
    layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
    .addGroup(layout.createSequentialGroup()
    .addContainerGap()
    .addComponent(jButtonFine, javax.swing.GroupLayout.DEFAULT_SIZE, 32, Short.MAX_VALUE)
    .addContainerGap())
    setBounds(600, 110, 160, 90);
    }// </editor-fold>
    private void jButtonFineMousePressed(java.awt.event.MouseEvent evt) {                                        
    avTransmit.stop();
    System.exit(0);
    * @param args the command line arguments
    public static void main(String args[]) {
    java.awt.EventQueue.invokeLater(new Runnable() {
    public void run() {
    // new JFrameMain().setVisible(true);
    // Variables declaration - do not modify
    private javax.swing.JButton jButtonFine;
    // End of variables declaration
    private AVTransmit3 avTransmit = null;
    * @(#)RTPSocketAdapter.java     1.2 01/03/13
    * Copyright (c) 1999-2001 Sun Microsystems, Inc. All Rights Reserved.
    * Sun grants you ("Licensee") a non-exclusive, royalty free, license to use,
    * modify and redistribute this software in source and binary code form,
    * provided that i) this copyright notice and license appear on all copies of
    * the software; and ii) Licensee does not utilize the software in a manner
    * which is disparaging to Sun.
    * This software is provided "AS IS," without a warranty of any kind. ALL
    * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, INCLUDING ANY
    * IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR
    * NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN AND ITS LICENSORS SHALL NOT BE
    * LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING
    * OR DISTRIBUTING THE SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR ITS
    * LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR DIRECT,
    * INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER
    * CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF THE USE OF
    * OR INABILITY TO USE SOFTWARE, EVEN IF SUN HAS BEEN ADVISED OF THE
    * POSSIBILITY OF SUCH DAMAGES.
    * This software is not designed or intended for use in on-line control of
    * aircraft, air traffic, aircraft navigation or aircraft communications; or in
    * the design, construction, operation or maintenance of any nuclear
    * facility. Licensee represents and warrants that it will not use or
    * redistribute the Software for such purposes.
    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, ctrlInStrm = null;
    SockOutputStream dataOutStrm = null, 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();
         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);
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          

  • Transmitting Video From WebCam

    Hello,
    When I use the sample application "VideoTransmit.java" to transmit video captured from my WebCam,
    the following error messages appear. How can I solve this problem?
    |
    | Video transmitted as:
    | JPEG/RTP, 160x120, FrameRate=15.0
    | Failed to build a graph for the given custom options.
    | Failed to realize: com.sun.media.ProcessEngine@1e8a1f6
    | Cannot build a flow graph with the customized options:
    | Unable to transcode format: AJPG, 160x120, FrameRate=15.0, Length=48000 0 extra bytes
    | to: JPEG/RTP, 160x120, FrameRate=15.0
    | outputting to: RAW/RTP
    | Error: Unable to realize com.sun.media.ProcessEngine@1e8a1f6
    | Error : Couldn't realize processor
    |
    Note: The sample application code and its description are located at:
    http://java.sun.com/products/java-media/jmf/2.1.1/solutions/VideoTransmit.html

    Here is the full output for the video formats that my camera supports. I suspect that my RGB or YUV vs. your AJPG is important.
    Name = vfw:Microsoft WDM Image Capture (Win32):0
    Locator = vfw://0
    Output Formats---->
    0. javax.media.format.RGBFormat
    RGB, 320x240, Length=230400, 24-bit, Masks=3:2:1, PixelStride=3, LineStride=960, Flipped
    1. javax.media.format.RGBFormat
    RGB, 160x120, Length=57600, 24-bit, Masks=3:2:1, PixelStride=3, LineStride=480, Flipped
    2. javax.media.format.RGBFormat
    RGB, 176x144, Length=76032, 24-bit, Masks=3:2:1, PixelStride=3, LineStride=528, Flipped
    3. javax.media.format.RGBFormat
    RGB, 352x288, Length=304128, 24-bit, Masks=3:2:1, PixelStride=3, LineStride=1056, Flipped
    4. javax.media.format.RGBFormat
    RGB, 640x480, Length=921600, 24-bit, Masks=3:2:1, PixelStride=3, LineStride=1920, Flipped
    5. javax.media.format.YUVFormat
    YUV Video Format: Size = java.awt.Dimension[width=160,height=120] MaxDataLength = 28800 DataType = class [B yuvType = 2 StrideY = 160 StrideUV = 80 OffsetY = 0 OffsetU = 19200 OffsetV = 24000
    6. javax.media.format.YUVFormat
      YUV Video Format: Size = java.awt.Dimension[width=176,height=144] MaxDataLength = 38016 DataType = class [B yuvType = 2 StrideY = 176 StrideUV = 88 OffsetY = 0 OffsetU = 25344 OffsetV = 31680
    7. javax.media.format.YUVFormat
      YUV Video Format: Size = java.awt.Dimension[width=320,height=240] MaxDataLength = 115200 DataType = class [B yuvType = 2 StrideY = 320 StrideUV = 160 OffsetY = 0 OffsetU = 76800 OffsetV = 96000
    8. javax.media.format.YUVFormat
      YUV Video Format: Size = java.awt.Dimension[width=352,height=288] MaxDataLength = 152064 DataType = class [B yuvType = 2 StrideY = 352 StrideUV = 176 OffsetY = 0 OffsetU = 101376 OffsetV = 126720
    9. javax.media.format.YUVFormat
      YUV Video Format: Size = java.awt.Dimension[width=640,height=480] MaxDataLength = 460800 DataType = class [B yuvType = 2 StrideY = 640 StrideUV = 320 OffsetY = 0 OffsetU = 307200 OffsetV = 384000
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       

  • Catching movie from WebCam???

    Hello,
    I am working on getting images from WebCam. My working Program, i downloaded it from Internet.. though any WebCam(Specially, CREATIVE ||, supporting VFW Drivers) is not compatible with that program.
    Give me a such program, that can get movie from WebCam, and show it on Client screen, and also tell me such WebCam configuration, that is compatilbe with that program,, and can show me the movie of WebCam.
    Please.. Please, Please........:)
    I am looking forward to your replies:)Thanks!
    Regards
    Kaleem

    hey u want to online priview or capture from web cam
    if u want to online priview
    MediaLocator m1 = new MedialLocator(" vfw://0");
               DataSource d = Manager.createDataSource(m1);
              Player p1;
                   p1= Manager.createPlayer(d);
        ControllerListener listener = new ControllerAdapter() {
                public void realizeComplete(RealizeCompleteEvent event) {
                  Component  vc = p1.getVisualComponent();
                       if (vc != null) {
                         //add ur program to this component.
           p1.start();
              p1.addControllerListener(listener);if u want to capture u must create a data sink for that

  • Can not capture from Sony HDV 1080i (recording in 60i)

    Hello
    We are trying to capture from the above camera to a Mac Dual G5. We are using FinalCutPro 5.1.2. We are using a FireWire 400 cable to connect to the front of the computer (have also tryed back of Cinema Display). The footage was captured in HDV1080/60i, and we have tried the corresponding formats in Easy Setup (Basic, standard, Apple Intermediate).
    The problem: we can control the camera from the Log and Capture windows, but when starting capture, no data is coming in, and the program therefor gives up after a few seconds (displaying a no data error message).
    We have tried Batch and Now capture. We can log clips, and get the correct time code, but can not capture those clips due to the no data problem.

    This is a good workaround for curing your camera recognition problem with FCP (if that's what it is):
    First, check that your Easy Setup / Timeline / Camera or Deck Settings are all exactly the same, then making sure your camera or deck is in VTR mode, try to capture again.
    FCP uses a different form of QT than iMovie for capturing, so if the camera works in iMovie (or if it's listed in System Profiler) but not FCP, it obviously means your Mac can see the VTR but FCP can't, so you need to do this QuickTime fix.
    http://docs.info.apple.com/article.html?artnum=301852
    Follow the instructions carefully and you should have things running in no time - it's quite safe but you must Trash the Receipts AND re-install QT from the link provided.
    If the Camera / Deck isn't recognised by iMovie or System Profiler, try resetting the Firewire Bus . . . Turn off the Mac and disconnect the power and all Firewire cables. Leave it for 30 mins then connect back up.
    Still not working? Try a different Firewire cable.
    Failing all this, try resetting the PMU (Power Management Unit). The method varies from machine to machine, so visit the Apple site and search for it in support.
    Don't use iMovie for capturing - it doesn't give you a timecode and that's very important.
    Let us know how you get on!
    Andy
    Quad 8GB. 250+500 HDs. G-Raid 1TB. NORTON. FCP 5.1.2. QT 7.1.3. Sony HVR Z1E   Mac OS X (10.4.7)  
    "I've taught you all I know, and still you know nothing".

Maybe you are looking for

  • Matching FI Line Items and Total Records for FM

    Dear Friends, Currently, we are implementing Public Sector Management using Former Budgeting. Some PR and PO has been created, before the FM budget data transferred from Cost Center Planning using FM9C. Using FMRP_2FMB4002 report, the u2018Available

  • How do i get an SCR331 CAC reader to work on OS 10.4.11

    How do i get an SCR331 CAC reader to work on OS 10.4.11.  I've seen all the CAC on MAC docs etc, just tired of all failed attempts and totally fed up. Thanks, Help!

  • What's with terrible movie selection in Canada

    Anyone know when new movies and recent movies updates that actually are knew not like Anchor man as top 10 for new releases?

  • How do you create a new page when user checks a box?

    I guess it would be a check box.  I'm looking for a way to have the user select create a new page when the user runs out of space in the text box that is given.  So if its possible is there a way to create a new page with a continuing text box when t

  • PrPro crashes on opening (as do other vid suite programs)

    Just built a new computer ... and although Photoshop, Bridge, & Lightroom all work fine, NONE of the video suite apps will load at all ... I am having troubles trying to get Win7's service pack 1 to install, so there may be underlying issues there. F