FrameAccess.java: Modifying frame rate capture ?

I'm currently supposed to capture the keyframes in a video and I've managed to find FrameAccess.java that has allowed me to capture all the frames in the video.
However, I do not need to capture every single frame; just need to capture frames maybe every 20 seconds or so.
-> Therefore, how do I go about doing it?
Also, when I ran FrameAccess.java, it seems that when it has reached the end of the video, it will keep trying to capture the last frame and it won't end until I manually end it.
-> How do I rectify this error?
I really hope someone can help. Thanks in advanced.
Edited by: silentvisual on Mar 4, 2009 1:08 AM

However, I do not need to capture every single frame; just need to capture frames maybe every 20 seconds or so. You can grab the frames using FrameGrabbingControl. Then why use FrameAccess.java??
If you use FrameGrabbingControl, then using Timer you can grab frames at whatever interval you want, e.g. try the following code:
[http://forums.sun.com/thread.jspa?messageID=10595229#10595229]
It uses a timer to grab frames at 30ms (you can make it 1000ms or anything by changing this line : " timer = new Timer(30, this);" ).
Now, I don't know what you want to do after capturing images, do you want to save images only or do you want to make a video from this, if this is the case then you can search for "Jpeg to Movie" JMF program example on this site.
Also, when I ran FrameAccess.java, it seems that when it has reached the end of the video, it will keep trying to capture the last frame and it won't end until I manually end it. For me, there is no such problem. The program ends when the end of video file is reached.
Thanks!

Similar Messages

  • Non-interactive FrameAccess.java and frame conversion woes

    Hello all,
    I am searching for a way to convert a webcam-acquired AVI file into a sequence of numbered TIFF images (one for each movie frame). While searching the 'net, I ran into the well-known sample called FrameAccess.java. Although it looks like a good starting point, I got stuck by a number of problems:
    1) I'm not interested in visualizing the frames as they get processed: I've got tons of players I can check the movie with before feeding it in to my extractor. A simple non-interactive application would be better. However, when I comment out the AWT-related portions of FrameAccess, it hangs after processing two or three frames.
    2) Which way is better to process the single frame with: PreAccess or PostAccess?
    2.1) In PreAccess it looks like the frame is still in raw YUV420 format, whereas in PostAccess it seems to have undergone some conversion since the buffer size is equal to the number of pixels. But the buffer data is returned as short[] when I would expect it to be of type byte[]. What am I missing here?
    3) Although it is a priori known that the AVI files were acquired in B/W mode, it looks like the AVI is made of 8-bit RGB frames. How can I possibly convert them into 8-bit or 16-bit grayscale images and save them as TIFF images? (*)
    Any ideas/hints/suggestions whatsoever that might help me tackle the above problems will be highly valued.
    Thanks in advance,
    Emmanuele
    (*) I am aware that this question could be partly off-topic since it may fall more appropriately into the Java2D/JAI realm. However, for the moment I'd like not to open too many threads.

    Hello all,
    I am searching for a way to convert a webcam-acquired AVI file into a sequence of numbered TIFF images (one for each movie frame). While searching the 'net, I ran into the well-known sample called FrameAccess.java. Although it looks like a good starting point, I got stuck by a number of problems:
    1) I'm not interested in visualizing the frames as they get processed: I've got tons of players I can check the movie with before feeding it in to my extractor. A simple non-interactive application would be better. However, when I comment out the AWT-related portions of FrameAccess, it hangs after processing two or three frames.
    2) Which way is better to process the single frame with: PreAccess or PostAccess?
    2.1) In PreAccess it looks like the frame is still in raw YUV420 format, whereas in PostAccess it seems to have undergone some conversion since the buffer size is equal to the number of pixels. But the buffer data is returned as short[] when I would expect it to be of type byte[]. What am I missing here?
    3) Although it is a priori known that the AVI files were acquired in B/W mode, it looks like the AVI is made of 8-bit RGB frames. How can I possibly convert them into 8-bit or 16-bit grayscale images and save them as TIFF images? (*)
    Any ideas/hints/suggestions whatsoever that might help me tackle the above problems will be highly valued.
    Thanks in advance,
    Emmanuele
    (*) I am aware that this question could be partly off-topic since it may fall more appropriately into the Java2D/JAI realm. However, for the moment I'd like not to open too many threads.

  • Modified frame rate properties keep resetting

    Hi community.
    I have faithfully switched over to Premiere Pro CC and so far so good. One thing that just sucks is that if I modify the frame rate of a clip (or series of clips) in a project (like take gopro 60fps footage and modify it to playback at 23.976) if I move that project to another computer the original settings come back (60fps)
    To better explain, I have duplicate projects set up at home, and in my office. They are cloned projects, so every byte is the same (folder structure included). If I work at home, then take the premiere pro project into to work, and relink it to the media files there, all the modified clips revert back. Which is a pain because I have to go through all the footage and re-modify them.
    Any fix on the horizon?
    Thanks team!
    Rs

    They are just looking past this, Just make sure to modify all the clips so when your project moves and it resets you only need to modify all the clips at once. Only fix I can see right now.

  • Frameaccess.java - time of presentation of each frame

    i've found frameaccess, which introduces a plugin in transcoding phase of processing.my question are, (i'm a newbie of jmf) it's possibile to modify in the code below the processor to have in shell display,time of presentation of each frame?another question is :it's possible to modify framerate and bit x pixel of output?
    thanks
    ////////////code
    * @(#)FrameAccess.java     1.5 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 javax.media.*;
    import javax.media.control.TrackControl;
    import javax.media.Format;
    import javax.media.format.*;
    * Sample program to access individual video frames by using a
    * "pass-thru" codec. The codec is inserted into the data flow
    * path. As data pass through this codec, a callback is invoked
    * for each frame of video data.
    public class FrameAccess extends Frame implements ControllerListener {
    Processor p;
    Object waitSync = new Object();
    boolean stateTransitionOK = true;
    * Given a media locator, create a processor and use that processor
    * as a player to playback the media.
    * During the processor's Configured state, two "pass-thru" codecs,
    * PreAccessCodec and PostAccessCodec, are set on the video track.
    * These codecs are used to get access to individual video frames
    * of the media.
    * Much of the code is just standard code to present media in JMF.
    public boolean open(MediaLocator ml) {
         try {
         p = Manager.createProcessor(ml);
         } catch (Exception e) {
         System.err.println("Failed to create a processor from the given url: " + e);
         return false;
         p.addControllerListener(this);
         // Put the Processor into configured state.
         p.configure();
         if (!waitForState(p.Configured)) {
         System.err.println("Failed to configure the processor.");
         return false;
         // So I can use it as a player.
         p.setContentDescriptor(null);
         // Obtain the track controls.
         TrackControl tc[] = p.getTrackControls();
         if (tc == null) {
         System.err.println("Failed to obtain track controls from the processor.");
         return false;
         // Search for the track control for the video track.
         TrackControl videoTrack = null;
         for (int i = 0; i < tc.length; i++) {
         if (tc.getFormat() instanceof VideoFormat) {
              videoTrack = tc[i];
              break;
         if (videoTrack == null) {
         System.err.println("The input media does not contain a video track.");
         return false;
         System.err.println("Video format: " + videoTrack.getFormat());
         // Instantiate and set the frame access codec to the data flow path.
         try {
         Codec codec[] = { new PreAccessCodec(),
                        new PostAccessCodec()};
         videoTrack.setCodecChain(codec);
         } catch (UnsupportedPlugInException e) {
         System.err.println("The process does not support effects.");
         // Realize the processor.
         p.prefetch();
         if (!waitForState(p.Prefetched)) {
         System.err.println("Failed to realize the processor.");
         return false;
         // Display the visual & control component if there's one.
         setLayout(new BorderLayout());
         Component cc;
         Component vc;
         if ((vc = p.getVisualComponent()) != null) {
         add("Center", vc);
         if ((cc = p.getControlPanelComponent()) != null) {
         add("South", cc);
         // Start the processor.
         p.start();
         setVisible(true);
         return true;
    public void addNotify() {
         super.addNotify();
         pack();
    * Block until the processor 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);
    * Main program
    public static void main(String [] args) {
         if (args.length == 0) {
         prUsage();
         System.exit(0);
         String url = args[0];
         if (url.indexOf(":") < 0) {
         prUsage();
         System.exit(0);
         MediaLocator ml;
         if ((ml = new MediaLocator(url)) == null) {
         System.err.println("Cannot build media locator from: " + url);
         System.exit(0);
         FrameAccess fa = new FrameAccess();
         if (!fa.open(ml))
         System.exit(0);
    static void prUsage() {
         System.err.println("Usage: java FrameAccess <url>");
    * Inner class.
    * A pass-through codec to access to individual frames.
    public class PreAccessCodec implements Codec {
    * Callback to access individual video frames.
         void accessFrame(Buffer frame) {
         // For demo, we'll just print out the frame #, time &
         // data length.
         long t = (long)(frame.getTimeStamp()/10000000f);
         System.err.println("Pre: frame #: " + frame.getSequenceNumber() +
                   ", time: " + ((float)t)/100f +
                   ", len: " + frame.getLength());
         * The code for a pass through codec.
         // We'll advertize as supporting all video formats.
         protected Format supportedIns[] = new Format [] {
         new VideoFormat(null)
         // We'll advertize as supporting all video formats.
         protected Format supportedOuts[] = new Format [] {
         new VideoFormat(null)
         Format input = null, output = null;
         public String getName() {
         return "Pre-Access Codec";
         // No op.
    public void open() {
         // No op.
         public void close() {
         // No op.
         public void reset() {
         public Format [] getSupportedInputFormats() {
         return supportedIns;
         public Format [] getSupportedOutputFormats(Format in) {
         if (in == null)
              return supportedOuts;
         else {
              // If an input format is given, we use that input format
              // as the output since we are not modifying the bit stream
              // at all.
              Format outs[] = new Format[1];
              outs[0] = in;
              return outs;
         public Format setInputFormat(Format format) {
         input = format;
         return input;
         public Format setOutputFormat(Format format) {
         output = format;
         return output;
         public int process(Buffer in, Buffer out) {
         // This is the "Callback" to access individual frames.
         accessFrame(in);
         // Swap the data between the input & output.
         Object data = in.getData();
         in.setData(out.getData());
         out.setData(data);
         // Copy the input attributes to the output
         out.setFormat(in.getFormat());
         out.setLength(in.getLength());
         out.setOffset(in.getOffset());
         return BUFFER_PROCESSED_OK;
         public Object[] getControls() {
         return new Object[0];
         public Object getControl(String type) {
         return null;
    public class PostAccessCodec extends PreAccessCodec {
         // We'll advertize as supporting all video formats.
         public PostAccessCodec() {
         supportedIns = new Format [] {
              new RGBFormat()
    * Callback to access individual video frames.
         void accessFrame(Buffer frame) {
         // For demo, we'll just print out the frame #, time &
         // data length.
         long t = (long)(frame.getTimeStamp()/10000000f);
         System.err.println("Post: frame #: " + frame.getSequenceNumber() +
                   ", time: " + ((float)t)/100f +
                   ", len: " + frame.getLength());
         public String getName() {
         return "Post-Access Codec";

    Alternatives to iPhoto's slideshow include:
    PhotoToMovie  $49.95
    PulpMotion  $129
    FotoMagico $99
    Final Cut Pro X $299
    It's difficult to compare these apps. They have differences in capability - some are driven off templates. some aren't. Some have a wider variety of transitions. Others will have excellent audio controls. It's worth checking them out to see what meets your needs. However, there is no doubt that Final Cut Pro X is the most capable app of them all. You get what you pay for.

  • Wrong capture frame rate

    Hi,
    I'm trying to conform a movie from recapture, and I'm with troubles.
    I'm capturing from HDCAM 1080i 59.94 and after capture my material should be 29.97fps. But always is different.
    Sometimes is 29.95 or 28.54 well... severals differents values.
    I see the speed of image is OK, I haven't drops.
    But when go to conform the timecodes doesn't match.
    FCP shows correct frame rate on Bin, but QT shows these variables frame rates.
    Anothers programs as Autodesk Smoke and Assimilate Scratch recognize the wrong frame rate too.
    I have a Mac Pro 12 core, using the latest Snow Leopard, FCP Studio 3 and QT.
    For storage have a External SAS disk array with 32 TB wich has a sustainted througput of 700MB/s (fully tested and OK).
    For capture I'm using a Aja Kona 3.
    Actually I already saw this problem in anothers versions of FCP and anothers machines.. but I never get to fix it.
    Please, someone already had this problem and fix it?
    Thanks in advance.
    Thiago Cabral

    QT almost is always wrong.  It plays what it can... and with Snow Leopard, QT X is just worse.  The fact that Smoke and Scratch report the wrong frame rate is really puzzling.  Try this...use the CONFORM option in Cinema Tools to conform the footage to 29.97.  Might be just the thing needed to LOCK that frame rate still.

  • Capture HDV Disk requirements for HDV 60i Frame Rate

    As a general rule, how much disk space is needed to capture HDV recorded in 60i mode which is 60fps interlaced (same as TV signal) frame rate? Any clues appreciated. Thank you.
    iMac 1.83Ghz Intel Core Duo   Mac OS X (10.4.8)   Canon XLH1 HDV Camcorder

    Matthew just posted in another topic that 1hr of HDV video uses about 22GB of storage space.
    (..1hr of standard def DV needs about 13GB of storage..)

  • If I "modify" a clips frame rate is this a permanent alteration, as in Apple Cinema Tool?

    I have some footage shot at 59.97 FPS and need to interpret the frame rate at 23.98.   If I do this via the "modify, interpret footage" menu options, will this permanently alter the clip?  In Apple Cinema Tools, it permanently alters the footage.
    Thanks!
    Ed

    It doesn't affect the original media.

  • Frame rate goes from 24fps to 29fps after capture

    I have all my footage on 24fps, DVX100A Panasonic Camera, and work on final cut pro 4.5. After my footage is capture some of the clips are on 29fps and others on 24fps... I don't know why is this happening... When I open the clips on Quicktime, even the ones that FCP has listed as the 29fps ones, the info quicktime displays says they are 23.98fps. I exported those files directly from the capture scratch folder and they go 29fps and if i drag them to the timeline they need to be renderize. I closed the program, re-opened it hoping for some magic but nothing... any ideas?? I'm on a deadline...

    did you shoot 24p or 24pA. if you shot 24p you need to capture using the cinema tools preset for reverse telecine. if you shot 24pA, use the setting for advanced pulldown removal.
    as well, make very sure that you edit in a 23.98 timeline, not a 24 timeline. You will absolutely lose sync if you edit 24p material in a 24 timeline.
    Keep in mind that whether you shoot 24p or 24pA, you are still capturing images into the camera at 29.97fps. The 2:3:3:2 pulldown and the 3:2 (2:3:2:3) pulldown methods are a way of duplicating fields to make up for the 6 frame difference.
    i.e. do the count.
    Frame 1 has two fields. Frame 2 has 3 fields, one field will be discarded upon pulldown removal. if you are shooting 24pA then frame 3 will also have 3 fields and then frame 4 will have 2 fields. If shooting 24p, then frame 3 will have 2 fields and frame 4 will have 3 fields. If you do the math you'll see that, for your intended 24 frames you have 12 extra fields. That is 6 frames (2 fields per frame...) The pulldown removal removes these frames upon capture. Leaving you with 23.98 frames to edit with. Make sure you use a 23.98 timeline. The setting you changed in your preferences was for playback, since FCP assumes you are playing back to an NTSC CRT monitor (capable of playing 29.97 fps ONLY) FCP will add a pulldown for the output. THis does not affect your project. It is done on the fly by FCP.
    Hope this helps.
    Matt

  • How to do implement the FrameAccess.java code in my project

    Iam doing an project in java for inserting the videos into oracle9i and searching the inserted videos using the frames of the videos inserted.I have done the project to insert and search the videos.But i have been asked to put an EXTRACT button to extract all the frames of the video being inserted.Please help me to implement the FrameAccess.java coding in my existing coding.I have pasted my coding(VideoInsert.java) and FrameAccess.java(used to extract frames) coding.
    The VideoInsert.java when executed will contain browse button to choose the video file(only .mpg files) to be inserted into the database.After selecting the file and when we press open button in the Open dialog box,the video will be played in jmf player in a separate window and the filepath of the video will be included in the textbox.Now what i need is,an extract button should be placed and when it is clicked,the frames of the corresponding selected video has to be extracted in the location where the project files are stored i.e.,the FrameAccess.java coding has to be executed.
    Please help me if anyone knows how to implement the above concept.
    VideoInsert.java
    import javax.swing.*;
    import java.util.*;
    import java.io.*;
    import oracle.sql.*;
    import java.sql.*;
    import oracle.jdbc.driver.*;
    import oracle.sql.BLOB ;
    import symantec.itools.multimedia.ImageViewer;
    public class VideoInsert extends javax.swing.JFrame {
        private Connection con;
        private Statement st=null;
        private OracleResultSet rs=null;
        int count=0;
        int count1=0;
        ImageViewer displaywindow = new ImageViewer();
        /** Creates new form VideoInsert */
        public VideoInsert() {
            initComponents();
            imgpane.add(displaywindow);
            try {
                DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
                con = DriverManager.getConnection("jdbc:oracle:oci:@","scott","tiger");
                  //con = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:FIRST","scott","tiger");
                con.setAutoCommit(false);
                st =con.createStatement();
                rs=(OracleResultSet)st.executeQuery("select max(vid) from browsevideo");
                while (rs.next()) {
                    count = (rs.getInt(1) + 1);
                rs.close();
                st =con.createStatement();
                rs=(OracleResultSet)st.executeQuery("select max(imageno) from browseimage");
                while (rs.next()) {
                    count1 = (rs.getInt(1) + 1);
                rs.close();
            } catch (SQLException e) {
                e.printStackTrace();
            txtvid.setText(String.valueOf(count));
             VideoTypeComboBox.addItem("All");
            VideoTypeComboBox.addItem("Entertainment");
            VideoTypeComboBox.addItem("Sports");
            VideoTypeComboBox.addItem("Animation");
            VideoTypeComboBox.addItem("News");
             VideoTypeComboBox.addItem("Others");
        /** 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.
        private void initComponents() {//GEN-BEGIN:initComponents
            jLabel1 = new javax.swing.JLabel();
            txtvid = new javax.swing.JTextField();
            jLabel2 = new javax.swing.JLabel();
            txtvidfile = new javax.swing.JTextField();
            jLabel3 = new javax.swing.JLabel();
            txtvidinfo = new javax.swing.JTextField();
            jLabel4 = new javax.swing.JLabel();
            txtimgfile = new javax.swing.JTextField();
            vidbrowse = new javax.swing.JButton();
            imgbrowse = new javax.swing.JButton();
            jLabel5 = new javax.swing.JLabel();
            txtimgcont = new javax.swing.JTextField();
            insert = new javax.swing.JButton();
            imgpane = new javax.swing.JPanel();
            jLabel6 = new javax.swing.JLabel();
            VideoTypeComboBox = new javax.swing.JComboBox();
            getContentPane().setLayout(null);
            setTitle("VideoInsert");
            addWindowListener(new java.awt.event.WindowAdapter() {
                public void windowClosing(java.awt.event.WindowEvent evt) {
                    exitForm(evt);
            jLabel1.setText("Video ID");
            getContentPane().add(jLabel1);
            jLabel1.setBounds(30, 80, 90, 16);
            txtvid.setEditable(false);
            getContentPane().add(txtvid);
            txtvid.setBounds(130, 80, 130, 20);
            jLabel2.setText("VideoFile");
            getContentPane().add(jLabel2);
            jLabel2.setBounds(30, 130, 70, 16);
            getContentPane().add(txtvidfile);
            txtvidfile.setBounds(130, 130, 130, 20);
            jLabel3.setText("VideoInfo");
            getContentPane().add(jLabel3);
            jLabel3.setBounds(30, 180, 80, 16);
            getContentPane().add(txtvidinfo);
            txtvidinfo.setBounds(130, 180, 130, 20);
            jLabel4.setText("TopImage");
            getContentPane().add(jLabel4);
            jLabel4.setBounds(30, 230, 70, 16);
            getContentPane().add(txtimgfile);
            txtimgfile.setBounds(130, 230, 130, 20);
            vidbrowse.setText("Browse");
            vidbrowse.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent evt) {
                    vidbrowseActionPerformed(evt);
            getContentPane().add(vidbrowse);
            vidbrowse.setBounds(280, 130, 78, 26);
            imgbrowse.setText("Browse");
            imgbrowse.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent evt) {
                    imgbrowseActionPerformed(evt);
            getContentPane().add(imgbrowse);
            imgbrowse.setBounds(280, 230, 78, 26);
            jLabel5.setText("ImageContent");
            getContentPane().add(jLabel5);
            jLabel5.setBounds(30, 280, 80, 16);
            getContentPane().add(txtimgcont);
            txtimgcont.setBounds(130, 280, 130, 20);
            insert.setText("Insert");
            insert.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent evt) {
                    insertActionPerformed(evt);
            getContentPane().add(insert);
            insert.setBounds(150, 400, 81, 26);
            imgpane.setLayout(new java.awt.BorderLayout());
            getContentPane().add(imgpane);
            imgpane.setBounds(410, 120, 350, 260);
            jLabel6.setText("Video Type");
            getContentPane().add(jLabel6);
            jLabel6.setBounds(30, 340, 80, 16);
            getContentPane().add(VideoTypeComboBox);
            VideoTypeComboBox.setBounds(130, 340, 130, 25);
            pack();
            java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
            setSize(new java.awt.Dimension(800, 600));
            setLocation((screenSize.width-800)/2,(screenSize.height-600)/2);
        }//GEN-END:initComponents
        private void insertActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_insertActionPerformed
            BLOB blb= null;
            PreparedStatement stmt = null;
            OutputStream fout=null;
            File f=null;
            FileInputStream fin=null;
            int bufferSize;
            byte[] buffer=null;
            int bytesRead = -1;
            String sfile1 = txtvidfile.getText();
            String sfile2 = txtimgfile.getText();
            String format=null;
            String format1=null;
            String videoinfo=txtvidinfo.getText();
            String imgcontent=txtimgcont.getText();
            String videoType=(String)VideoTypeComboBox.getSelectedItem();
            if(sfile1.endsWith("avi")) {
                format="avi";
            }else if(sfile1.endsWith("mpg")) {
                format="mpg";
            }else {
                format="mpg";
            if(sfile2.endsWith("jpg")) {
                format1="jpg";
            }else if(sfile2.endsWith("gif")) {
                format1="gif";
            }else {
                format1="jpg";
            if((sfile1.length()>0) && (sfile2.length()>0)) {
                try {
                    stmt=con.prepareStatement(" insert into browsevideo values (?,EMPTY_BLOB(),?,?,?)");
                    stmt.setInt(1,count);
                    stmt.setString(2,format);
                    stmt.setString(3,videoinfo);
                     stmt.setString(4,videoType);
                    stmt.executeUpdate();
                    stmt.close();
                    con.commit();
                }catch(Exception e) {
                    e.printStackTrace();
                try {
                    stmt = con.prepareStatement("Select video FROM browsevideo WHERE vid = ? for update of video");
                    stmt.setInt(1,count);
                    rs = (OracleResultSet)stmt.executeQuery();
                    rs.next();
                    blb = rs.getBLOB("video");
                    fout = blb.getBinaryOutputStream();
                    f = new File(sfile1);
                    fin = new FileInputStream(f);
                    bufferSize = blb.getBufferSize();
                    buffer = new byte[bufferSize];
                    while((bytesRead = fin.read(buffer)) != -1) {
                        fout.write(buffer, 0, bytesRead);
                    fout.flush();
                    fout.close();
                    con.commit();
                    rs.close();
                    stmt.close();
                }catch(Exception e) {
                    e.printStackTrace();
                try {
                    stmt=con.prepareStatement(" insert into browseimage values (?,?,?,EMPTY_BLOB(),?,?,?)");
                    stmt.setInt(1,count);
                    stmt.setInt(2,count1);
                    stmt.setInt(3,count1);
                    stmt.setString(4,imgcontent);
                    stmt.setString(5,format1);
                    stmt.setString(6,videoType);
                    stmt.executeUpdate();
                    stmt.close();
                    con.commit();
                }catch(Exception e) {
                    e.printStackTrace();
                try {
                    stmt = con.prepareStatement("Select image FROM browseimage WHERE imageno = ? for update of image");
                    stmt.setInt(1,count1);
                    rs = (OracleResultSet)stmt.executeQuery();
                    if(rs.next()) {
                        blb = rs.getBLOB("image");
                        fout = blb.getBinaryOutputStream();
                        f = new File(sfile2);
                        fin = new FileInputStream(f);
                        bufferSize = blb.getBufferSize();
                        buffer = new byte[bufferSize];
                        while((bytesRead = fin.read(buffer)) != -1) {
                            fout.write(buffer, 0, bytesRead);
                        fout.flush();
                        fout.close();
                        con.commit();
                        rs.close();
                    stmt.close();
                    count++;
                    count1++;
                    txtimgfile.setText("");
                    txtvidfile.setText("");
                    txtimgcont.setText("");
                    txtvidinfo.setText("");
                    txtvid.setText(String.valueOf(count));
                    JOptionPane.showMessageDialog(this,"Successfuly Completed");
                }catch(Exception e) {
                    e.printStackTrace();
        }//GEN-LAST:event_insertActionPerformed
        private void imgbrowseActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_imgbrowseActionPerformed
            ExampleFileFilter filter1 = new ExampleFileFilter();
            JFileChooser chooser = new JFileChooser();
            filter1.addExtension("jpg");
            filter1.addExtension("gif");
            filter1.setDescription("JPG,GIF Images");
            chooser.setFileFilter(filter1);
            int returnVal = chooser.showOpenDialog(this);
            if(returnVal == JFileChooser.APPROVE_OPTION) {
                txtimgfile.setText(chooser.getSelectedFile().getAbsolutePath());
                try{
                        displaywindow.setImageURL(new java.net.URL("file:"+txtimgfile.getText()));
                        displaywindow.setStyle(ImageViewer.IMAGE_SCALED_TO_FIT);
                    }catch(Exception e){
                        e.printStackTrace();
        }//GEN-LAST:event_imgbrowseActionPerformed
        private void vidbrowseActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_vidbrowseActionPerformed
           ExampleFileFilter filter2 = new ExampleFileFilter();
           JFileChooser chooser = new JFileChooser();
           filter2.addExtension("avi");
            filter2.addExtension("mpg");
            filter2.setDescription("AVI & MPG Video");
            chooser.setFileFilter(filter2);
            int returnVal = chooser.showOpenDialog(this);
            if(returnVal == JFileChooser.APPROVE_OPTION) {
                txtvidfile.setText(chooser.getSelectedFile().getAbsolutePath());
                VideoAudioPlayer vap=new VideoAudioPlayer(txtvidfile.getText());
        }//GEN-LAST:event_vidbrowseActionPerformed
        /** Exit the Application */
        private void exitForm(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_exitForm
            setVisible(false);
            dispose();
        }//GEN-LAST:event_exitForm
         * @param args the command line arguments
        /*public static void main(String args[]) {
            new VideoInsert().show();
        // Variables declaration - do not modify//GEN-BEGIN:variables
        private javax.swing.JButton imgbrowse;
        private javax.swing.JLabel jLabel4;
        private javax.swing.JTextField txtvid;
        private javax.swing.JLabel jLabel1;
        private javax.swing.JTextField txtimgcont;
        private javax.swing.JLabel jLabel3;
        private javax.swing.JLabel jLabel2;
        private javax.swing.JPanel imgpane;
        private javax.swing.JButton insert;
        private javax.swing.JComboBox VideoTypeComboBox;
        private javax.swing.JButton vidbrowse;
        private javax.swing.JTextField txtvidfile;
        private javax.swing.JLabel jLabel6;
        private javax.swing.JLabel jLabel5;
        private javax.swing.JTextField txtimgfile;
        private javax.swing.JTextField txtvidinfo;
        // End of variables declaration//GEN-END:variables
    FrameAccess.java
    import java.awt.*;
    import javax.media.*;
    import javax.media.control.TrackControl;
    import javax.media.Format;
    import javax.media.format.*;
    import java.io.*;
    import javax.imageio.*;
    import javax.imageio.stream.*;
    import java.awt.image.*;
    import java.util.*;
    import javax.media.util.*;
    * Sample program to access individual video frames by using a
    * "pass-thru" codec. The codec is inserted into the data flow
    * path. As data pass through this codec, a callback is invoked
    * for each frame of video data.
    public class FrameAccess implements ControllerListener {
         Processor p;
         Object waitSync = new Object();
         boolean stateTransitionOK = true;
         public boolean alreadyPrnt = false;
         * Given a media locator, create a processor and use that processor
         * as a player to playback the media.
         * During the processor's Configured state, two "pass-thru" codecs,
         * PreAccessCodec and PostAccessCodec, are set on the video track.
         * These codecs are used to get access to individual video frames
         * of the media.
         * Much of the code is just standard code to present media in JMF.
         public boolean open(MediaLocator ml) {
              try {
                   p = Manager.createProcessor(ml);
                                } catch (Exception e) {
                   System.err.println(
                        "Failed to create a processor from the given url: " + e);
                   return false;
              p.addControllerListener(this);
              // Put the Processor into configured state.
              p.configure();
              if (!waitForState(Processor.Configured)) {
                   System.err.println("Failed to configure the processor.");
                   return false;
              // So I can use it as a player.
              p.setContentDescriptor(null);
              // Obtain the track controls.
              TrackControl tc[] = p.getTrackControls();
              if (tc == null) {
                   System.err.println(
                        "Failed to obtain track controls from the processor.");
                   return false;
              // Search for the track control for the video track.
              TrackControl videoTrack = null;
              for (int i = 0; i < tc.length; i++) {
                   if (tc.getFormat() instanceof VideoFormat) videoTrack = tc[i];
                   else     tc[i].setEnabled(false);
              if (videoTrack == null) {
                   System.err.println("The input media does not contain a video track.");
                   return false;
              String videoFormat = videoTrack.getFormat().toString();
              Dimension videoSize = parseVideoSize(videoFormat);
              System.err.println("Video format: " + videoFormat);
              // Instantiate and set the frame access codec to the data flow path.
              try {
                   Codec codec[] = { new PostAccessCodec(videoSize)};
                   videoTrack.setCodecChain(codec);
              } catch (UnsupportedPlugInException e) {
                   System.err.println("The process does not support effects.");
              // Realize the processor.
              p.prefetch();
              if (!waitForState(Processor.Prefetched)) {
                   System.err.println("Failed to realise the processor.");
                   return false;
              p.start();
              return true;
         /**parse the size of the video from the string videoformat*/
         public Dimension parseVideoSize(String videoSize){
              int x=300, y=200;
              StringTokenizer strtok = new StringTokenizer(videoSize, ", ");
              strtok.nextToken();
              String size = strtok.nextToken();
              StringTokenizer sizeStrtok = new StringTokenizer(size, "x");
              try{
                   x = Integer.parseInt(sizeStrtok.nextToken());
                   y = Integer.parseInt(sizeStrtok.nextToken());
              } catch (NumberFormatException e){
                   System.out.println("unable to find video size, assuming default of 300x200");
              System.out.println("Image width = " + String.valueOf(x) +"\nImage height = "+ String.valueOf(y));
              return new Dimension(x, y);
         * Block until the processor 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);
         * Main program
         public static void main(String[] args) {
    //          if (args.length == 0) {
    //               prUsage();
    //               System.exit(0);
    // System.out.print("masoud");
    String url = new String("file:F:\\AVSEQ01.mpg");
              if (url.indexOf(":") < 0) {
                   prUsage();
                   System.exit(0);
              MediaLocator ml;
              if ((ml = new MediaLocator(url)) == null) {
                   System.err.println("Cannot build media locator from: " + url);
                   System.exit(0);
              FrameAccess fa = new FrameAccess();
              if (!fa.open(ml))
                   System.exit(0);
         static void prUsage() {
              System.err.println("Usage: java FrameAccess <url>");
         * Inner class.
         * A pass-through codec to access to individual frames.
         public class PreAccessCodec implements Codec {
              * Callback to access individual video frames.
              void accessFrame(Buffer frame) {
                   // For demo, we'll just print out the frame #, time &
                   // data length.
                   long t = (long) (frame.getTimeStamp() / 10000000f);
                   System.err.println(
                        "Pre: frame #: "
                             + frame.getSequenceNumber()
                             + ", time: "
                             + ((float) t) / 100f
                             + ", len: "
                             + frame.getLength());
              * The code for a pass through codec.
              // We'll advertize as supporting all video formats.
              protected Format supportedIns[] = new Format[] { new VideoFormat(null)};
              // We'll advertize as supporting all video formats.
              protected Format supportedOuts[] = new Format[] { new VideoFormat(null)};
              Format input = null, output = null;
              public String getName() {
                   return "Pre-Access Codec";
              //these dont do anything
              public void open() {}
              public void close() {}
              public void reset() {}
              public Format[] getSupportedInputFormats() {
                   return supportedIns;
              public Format[] getSupportedOutputFormats(Format in) {
                   if (in == null)
                        return supportedOuts;
                   else {
                        // If an input format is given, we use that input format
                        // as the output since we are not modifying the bit stream
                        // at all.
                        Format outs[] = new Format[1];
                        outs[0] = in;
                        return outs;
              public Format setInputFormat(Format format) {
                   input = format;
                   return input;
              public Format setOutputFormat(Format format) {
                   output = format;
                   return output;
              public int process(Buffer in, Buffer out) {
                   // This is the "Callback" to access individual frames.
                   accessFrame(in);
                   // Swap the data between the input & output.
                   Object data = in.getData();
                   in.setData(out.getData());
                   out.setData(data);
                   // Copy the input attributes to the output
                   out.setFlags(Buffer.FLAG_NO_SYNC);
                   out.setFormat(in.getFormat());
                   out.setLength(in.getLength());
                   out.setOffset(in.getOffset());
                   return BUFFER_PROCESSED_OK;
              public Object[] getControls() {
                   return new Object[0];
              public Object getControl(String type) {
                   return null;
         public class PostAccessCodec extends PreAccessCodec {
              // We'll advertize as supporting all video formats.
              public PostAccessCodec(Dimension size) {
                   supportedIns = new Format[] { new RGBFormat()};
                   this.size = size;
              * Callback to access individual video frames.
              void accessFrame(Buffer frame) {
                   // For demo, we'll just print out the frame #, time &
                   // data length.
                   if (!alreadyPrnt) {
                        BufferToImage stopBuffer = new BufferToImage((VideoFormat) frame.getFormat());
                        Image stopImage = stopBuffer.createImage(frame);
                        try {
                             BufferedImage outImage = new BufferedImage(size.width, size.height, BufferedImage.TYPE_INT_RGB);
                             Graphics og = outImage.getGraphics();
                             og.drawImage(stopImage, 0, 0, size.width, size.height, null);
                             //prepareImage(outImage,rheight,rheight, null);
                             Iterator writers = ImageIO.getImageWritersByFormatName("jpg");
                             ImageWriter writer = (ImageWriter) writers.next();
                             //Once an ImageWriter has been obtained, its destination must be set to an ImageOutputStream:
                             File f = new File(frame.getSequenceNumber() + ".jpg");
                             ImageOutputStream ios = ImageIO.createImageOutputStream(f);
                             writer.setOutput(ios);
                             //Finally, the image may be written to the output stream:
                             //BufferedImage bi;
                             //writer.write(imagebi);
                             writer.write(outImage);
                             ios.close();
                        } catch (IOException e) {
                             System.out.println("Error :" + e);
                   //alreadyPrnt = true;
                   long t = (long) (frame.getTimeStamp() / 10000000f);
                   System.err.println(
                        "Post: frame #: "
                             + frame.getSequenceNumber()
                             + ", time: "
                             + ((float) t) / 100f
                             + ", len: "
                             + frame.getLength());
              public String getName() {
                   return "Post-Access Codec";
              private Dimension size;

    check out the java.lang.Runtime and java.lang.Process classes

  • Importing video  Frame Rate Off???

    I am importing video which was shot on a DVX 100 at 24p the image plays fine on my playback deck but when I Play the digitized footage in FC it appears to be in fast forward... Not sure if this is a Frame Rate Issue???

    I don't understand. Did the captured clips playback fine in fcp last night? How did you digitize them? You need to either use the correct capture preset in fcp or modify an existing preset. If you're using another piece of software to capture, you gotta let us know this info.

  • Want to change frame rate, help, please !!

    hi all,
    i want to know whether, jmf does provide any support for changing the frame rate ? is there any ways by which one can change the framerate, of a live captured video ?
    i came across one class "FrameRateControl" in jmf, tried it, but wasn't successful in changing the frame rate. plz help me guys.
    if u have came across, when doing live capturing using jmstudio, we can change the frame rate. can we do that in our programs tooo.
    please someone, wew64, watergad.......... help me out..........,
    thanks for ur help.
    niraj.

    the code is here and it is working on windows, but the framerate could not be changed on linux. it keeps saying rcFormat is null on linux. Then I try to change the framerate with JMStudio, it doest not make any difference as well, it seems keep playing the video with preferred frame rate as well. Any ideas?
    import java.applet.Applet;
    import java.awt.*;
    import java.io.*;
    import java.net.*;
    import javax.media.*;
    import javax.media.cdm.CaptureDeviceManager;
    import javax.media.control.*;
    import javax.media.format.VideoFormat;
    import javax.media.util.BufferToImage;
    import javax.media.protocol.*;
    import javax.swing.*;
    import java.util.*;
    import com.sun.image.codec.jpeg.JPEGCodec;
    import com.sun.image.codec.jpeg.JPEGEncodeParam;
    import com.sun.image.codec.jpeg.JPEGImageEncoder;
    public class TVCapture extends Applet {
    static Player player = null;
    Format [] formats;
         FormatControl [] vfc = null; // Video FormatControl
         CaptureDevice vcd = null; // Video CaptureDevice
         private DataSource vds = null; // Video DataSource
         public void init(){
              try {
                   vds = Manager.createDataSource(new MediaLocator("v4l://0")); //on linux
    //               vds = Manager.createDataSource(new MediaLocator("vfw://0")); //on windows
              } catch (java.io.IOException _e)   {
                   System.out.println(_e);
              } catch (NoDataSourceException _e) {
                   System.out.println(_e);
              vcd = (CaptureDevice)vds;
              vfc = vcd.getFormatControls();
              if (vfc != null) {
                   System.out.println("vfc ! = null");
                   System.out.println("vfc[0] = " + vfc[0]);
                   System.out.println("vfc.length = " + vfc.length);
                   System.out.println("vfc[0].getFormat = " + vfc[0].getFormat());
                   Format [] supportedFormats = vfc[0].getSupportedFormats();
                   int i;
                   for (i=0; i< supportedFormats.length; i ++) {
         System.out.println("supportedFormats["+i+"]=" + supportedFormats);
    //               Format tmpFormat = vfc[0].setFormat(supportedFormats[6]);
                   Format tmpFormat = supportedFormats[6];
                   System.out.println("tmpFormat = " + tmpFormat);
                   System.out.println("tmpFormat.getEncoding() = " + tmpFormat.getEncoding());
                   System.out.println("Dimension size =" + ((VideoFormat)tmpFormat).getSize());     
                   System.out.println("maxDataLength =" + ((VideoFormat)tmpFormat).getMaxDataLength());     
                   System.out.println("tmpFormat.getDataType() = " + tmpFormat.getDataType());
                   System.out.println("frameRate = " + ((VideoFormat)tmpFormat).getFrameRate());
                   VideoFormat videoFormat = new VideoFormat( tmpFormat.getEncoding(),
                                                      ((VideoFormat)tmpFormat).getSize(),
                                                                     ((VideoFormat)tmpFormat).getMaxDataLength(),
                                                                     tmpFormat.getDataType(),
                                                                     25.0f);
                   Format rcFormat = vfc[0].setFormat(videoFormat);
                   System.out.println("rcFormat = " + rcFormat);
                   //it seems rcFormat is null on linux
                   //but setFormat is working on windows
              } else {
                   System.out.println("cannot get the formatControls()");
              setLayout(new BorderLayout());
              setSize(320,240);
              try {
    //      player = Manager.createRealizedPlayer(new MediaLocator("v4l://0"));
    player = Manager.createRealizedPlayer(vds);
    player.start();
    Component comp;
    if ((comp = player.getVisualComponent()) != null) {
         add(comp,BorderLayout.NORTH);
    //               add (player.getControlPanelComponent());
    } catch (Exception e) {
    e.printStackTrace();
    public static void playerclose() {
              if(player != null) {           
         player.close();
         player.deallocate();
    public void close() {
              if(player != null) {
                   player.close();
    public void destroy() {
              if (player != null) {
              player.close();
              player.deallocate();
    public void stop() {
              if (player != null ) {
              player.stop();

  • CS6 imports file at incorrect frame rate

    Hi all,
    Exported recordings from Screenflow and using Premiere Pro CS6 to edit them.
    We have two screen captures from Screenflow made on the same day. We exported both with the same settings into .mov files.
    part-1.mov imports correctly at 25 fps.
    part-2.mov imports incorrectly at 2.5 fps. ???
    We tried the following without remedy:
    - restarting Premiere Pro
    - re-exporting part-2 in Screenflow
    - opening the exported file in QuickTime and export it again using QuickTime, as QuickTime sees the frame rate correctly
    Still no luck. We're stuck.
    part-2 does look choppier in Premiere than it does in Screenflow. It is visibly dropping frames.
    To add more frustration, Premiere imports the file with the correct duration, about 1:03:31. So if we mess around with the frame rate in Clip > Modify > Interpret Footage..., it speeds up the clip and has the wrong duration.
    Does anyone know what's happening? Is there a way to modify the frame rate of a clip without affecting its duration?
    Thanks,
    paula

    More information needed for someone to help... click these links and provided the requested information
    -http://forums.adobe.com/message/4200840
    -http://forums.adobe.com/thread/416679

  • Video Frame rate problem.

    Hi experts,
    I am working with JMF to capture a video source and display it in a JInternalFrame.
    I set the frame rate to 30fps, but when running the program I only have 1fps. If I set the LightWeightRenderer of the Manager to false, then I have 16fps (not the 30fps requested).
    If I use JMStudio I get the 30fps.
    Do you have any idea of what's going wrong ??
    Your ideas are welcome.
    Matthieu

    Thanks for your answers.
    In fact, I am capturing a video source coming from an echograph with a Miro PCTV video card (bt848).
    My computer runs with WinXP on a PentiumIII 450Mhz, 256Mo of RAM, and a NVidia GeForce 2 GTS with 32Mo of RAM.
    I obtained the following results:
         -> Using RGB, 640x480, 24bits, 30fps :the real frame rate is 3-4 fps.
         -> Using YUV, 640x480, 30fps: the frame rate reaches 15 fps.
         -> Using JMStudio I always get 30fps.
    This frame rate is given by the video player.
    I think that the problem is not linked to the hardware configuration but in the way the video is displayed in the application.
    Indeed, I don't anderstand why JMstudio is able to give 30fps and my application only a few fps.
    The main difference is that I display the video in a JInternalFrame and in a Frame. But even if I supress the Manager.LightWeightRenderer support results are a little better but I never reach the 30fps.
    To build the video renderer I have used the MDIApp.java and JMFrame.java files given by Sun.
    My question is what can do the difference? How can the Sun code be so performant ?
    If you want more details on my code, I can put some piece of code on the forum.
    Thanks to find a solution because I am going to go crazy !!!!

  • Setting jmf bit rate/ frame rate

    Hi!!
    I'm with some problems configuring my video settings.
    Where should I go to set the frame rate od my video streaming?
    I'm using H263 format, and the frame rate is variable and I want to set it for a lower value so that my video streaming can be more "fluid".
    Should I go to Control Panel of the Windows and change there at Multimedia codecs?
    Regards from Portugal

    Here You have sample how to specify frame rate (in this exampke - 10f). I use here data from video caprure and create processor with ProcessorModel. Then I send it by network (RAW_RTP - in this dimentions it id H263)
    VideoFormat vf = null;
    Dimension size = new Dimension(176, 144);
    vf = new VideoFormat("RGB", size, Format.NOT_SPECIFIED,     null, 10f);
    Format [] formats = new Format[] { vf };
    ContentDescriptor cd = new ContentDescriptor(ContentDescriptor.RAW_RTP);
    ProcessorModel proc_mod = new ProcessorModel(dsCapt, formats, cd);
    dsCapt is DataSource from my capture device.
    for details look: JVidCap file from : http://java.sun.com/products/java-media/jmf/2.1.1/solutions/JVidCap.html

  • Can't set frame rate on animated GIF PSE8 on Mac

    When saving an animated GIF in Elements 8 (running on Mac OSX 10.6 Snow Leopard) I can't modify the frame rate. It is set at the default .2 delay and can't be modified. Anyone know of a fix for this?
    Thanks.

    Thanks Barbara... I have used that very workaround already - but was hoping there was a solution so I could just do it in the app designed for this! So unfortunate that Adobe knows about this bug and hasn't fixed it!

Maybe you are looking for

  • HP DL 360 G6 Server Display

    Hi All, I have a problem with my new server I have installed win 2003 R2, all was fine till when i rebooted,  then problems start It booted up with its BIOS graphics displaying some carractors and symbols  If i let it continue its kinder displaying w

  • I get an error message, please help.

    I trying demo version of crystal report. But like any report software I try for visual studio, that just dont work =:0( I got an error after projet was generated: Erreur     1     Une référence à l'assembly 'CrystalDecisions.CrystalReports.Engine, Ve

  • Specifying a circle with 2 mouse presses

    Hi, I'm trying to create an applet that allows the user to specify a circle with 2 mouse presses. I'd like the 1st point to represent the circle's centre and the 2nd to be any point on the periphery. Creating a mouse press event handler is a given ob

  • How to start with a maximized Browser

    Hello, the first thing what I do when I start Aperture is to maximize the browser, so a question was born: Is it possible to start with the preference that aperture starts with a maximized Browser? I know it is just a little click on an icon, but I d

  • Simple library question

    Is it possible to export only the contents of a library to an external folder for later importation and use. I seem to spend loads of time re-doing the same graphics and buttons over and over again. I would like to export to a folder and then selecti