Echo suppresion + video quality (webcam streaming)

Does Adobe have plans in the near future to improve audio and  video quality when streaming with mic and webcam?
It would be good to work on it to compete with other kind of plugins that are being developed, like Google Cam Adapter.
Thanks

Hi,
1) To increase camera quality, you need to increase resolutionFactor value in WebcamPublisher. See API docs for details.
2) Recording is supported but this is in beta. You need to send us a request for setup with your storage url etc to get it set up for you. After that, you can use our sampleApps to see how recording works. Mail to [email protected] with detail request in case you want.
3) ScreenShare is supported since our August release. You can see screenshare examples in our sampleApps folder for details. We don’t yet support screen control but we plan to do from upcoming release.
Hope this helps
Thanks
Hironmay Basu

Similar Messages

  • Poor Video Quality after Streaming

    Dear all,
    We have been provided with a number of .mpg files from a
    client and we have streamed then into Flash, using the usual
    settings. When streamed however, the resulting video is of a poorer
    quality than the original file.
    Just wondering if anyone had any ideas - we are probably
    doing something wrong, but we've tried a number of various options
    when importing.
    Any advice greatly appreciated.
    The videos produced may be seen at:
    http://www.atomicwebsolutions.com/foodesign07test/reel.asp
    Many thanks
    Dave

    Hi B,
    We used - at encoding screen:
    Profile - Custom
    Video Codec - tried On2 and Spark
    Quality - High
    Frame Rate - Same as Source
    Key Frame Placement - Automatic
    We used similar settings for .WMV files in the past and the
    video quality was fine, but with .MPG files, the resulting quality
    is much less than the original.
    Best wishes
    Dave

  • IMac 24" video quality issue (streaming and non)

    I have searched the forums extensively and not found anything that quite matches the issue I'm currently having. If you know there's a previous thread with a solution please direct me there.
    This issue first popped up when I tried to watch the season finale of 30 Rock on Hulu: the focal points of the scene weren't as sharp, everything in the background seemed seemed to pixelate intermittently and if there was any kind of motion, there was pixelation around that. I chalked it up to Hulu's new player, especially since anything else I watched on Hulu had all the same attributes.
    Then, after taking a break from not using my Netflix, I noticed that anything I streamed on there did the same things. I checked my ISP download speed and it was 20mbps (way above the suggested amount for DVD-quality picture). It also seemed fishy that when streaming Netflix through my Xbox 360 (and the same router), everything looked beyond crisp.
    The final straw came playing DVDs. I noticed some of that same degredation around motion that plagued the other two examples, although on a much smaller scale (my assumption being that the quality starts out much hire from a DVD source than streaming).
    Has any one ever had this issue? The machine is not even 2 years old yet (Purchased March 2008).
    Thanks in advance for any and all responses,
    Leo

    The general question of whether to use interlaced footage is a topic for another forum (e.g. the Video Lounge) but one thing to bear in mind when embedding video into PDFs is that it won't usually play at 1:1 pixel scale. Resampling will occur, and that can introduce visual effects.
    You have two options to make the video play at '100% size' - either set the Rich Media Annotation to play in a floating window and define it to match the footage dimensions, or use a custom version of the videoPlayer widget that turns off scaling.

  • Private Streaming Video Quality

    I have been using the private streaming video feature and I've noticed that the video quality on the receiving end is degraded. If I stream video to the entire room it looks fine on all the subscribers, but a private stream to a single subscriber is degraded.
    Has anyone else seen this?
    Thanks,
    Barry

    Hi Barry,
    We don't do anything special for private streaming except showing it to just the required user. There is no change in the connection or streaming as Nigel mentioned. So, It's kind of weird. I will get along with QE sometime to see if there is any difference between the private streams and streams received by everyone.
    Thanks
    Hironmay Basu

  • How to set/determine live recorded stream video quality?

    Hi,
    I was wondering if I were to create a NetStream object and publish it passing in "record" (allowing the end user to record a video via webcam which is then stored on the FMS), how would I specify the bitrate and frame rates etc of the video being recorded? Is this something I need to configure flash media server to do or can I do this through action script?
    Thanks

    FMS will record video at the bitrate/framerate which is published to the server. You'll set your encoding parameters on the client side from where the video is being published.
    In the case of flash/flex, you would set this using the setMode and setQuality methods of the Camera class.

  • 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);
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          

  • Audio prioritization over Video with webcams

    Apparently FMS automatically prioritizes audio over video in
    a webcam conversation. In my experience this doesn't really happen.
    In my app, possibly due to bandwidth limitations, webcam stream
    runs with a delay of a few seconds (starts ok, but the delay grows
    as the conversation continues). When the delay happens, audio is
    synced with the webcam stream. I can live with seeing a video delay
    of a few seconds (or lower quality or even totally interrupted),
    but I certainly don't want that to happen to the audio.
    Is there something that I need to do for FMS to limit the
    video stream in favour of keeping audio as close to "live" as
    possible. Right now, video lags and audio is always synced with it.

    I hear what Daniel is saying. FMS_Developer this is great
    feedback, but can you or can anyone else in the community or at
    Adobe that can help define the FMS configuration and AS elements
    that need to be tweaked (read as "set") to help FMS developers
    quickly get past what should be a simple set up in their app rather
    than a science project or a guessing game?
    (e.g. Here are the items to consider - Network (User
    (Bandwidth) to Server to (Bandwidth)Users) and based on these
    connections if are you trying to achieve near real time audio /
    video communication there is a balance between video / audio
    quality, the number of connections and the amount of dropped
    packets. Here are the AS items and FMS files to tweak and why. 1)
    NetStream.setBufferTime() on the Client and the Server 2)
    Client.setBandwidthLimit( ), NetStream.currentFps, etc. The
    NetStream.setBufferTime() is important helps you to … )
    I found the same thing as Dan – I cannot find the FMS
    configuration and AS elements that need to be tweaked spelled out
    anywhere in a single spot towards easily understanding how to
    proceed with audio / video chat apps.
    Can anyone in the community or at Adobe that can help define
    the FMS configuration and AS elements that need to be tweaked (read
    as "set") to help FMS developers quickly get past what should be a
    simple set up in their app rather than a science project or a
    guessing game? Or do you know of any resource on the net that would
    assist?
    Thanks in advance
    -SR

  • Video won't stream. Need help

    I have a flash video, that will play when localy stored on my
    hard drive, and it will play as a progressive download (delivered
    via HTTP), but it will not play if I set it up to stream (delivered
    via RTMP).
    Any thoughts on why this is happening or how I can fix this?
    The video is not one I personally created, it was created by
    one of my partners and sent to me via FTP to load to our CDN. 30 of
    the 50 files they had sent to us DO STREAM, but the 20 that don't
    have me baffled.
    Any thoughts?
    Video Details:
    Type: Flash Video File
    Size: 5910KB (6052179 bytes)
    Media Length: 00:01:54
    Video Size: 640x480
    Video: FLV4 640x368 [Video]
    Audio: MPEG Audio Layer 3 44100Hz stereo 128Kbps [Audio]
    Thanks!
    Dave

    Here is how I fixed the files:
    First I used the FLV Check Tool to determine the error and I
    came up with -9 which is an Invalid FLV message footer.
    Then I found info on Fixing Flash videos (FLV) for use with
    Adobe Flash Media Server (FMS) here:
    http://muzso.hu/2008/12/18/fixing-flash-videos-flv-for-use-with-adobe-flash-media-server-f ms
    It basically instructs you to use FFMPEG to rewrite the
    metadata by telling it to copy the video and audio streams over and
    only write new metadata. So the streams remain untouched (thus
    video quality stays the same), only the container metadata is
    regenerated (ie. fixed if it was "broken").
    Here is the FFMPEG line to write into your command line tool:
    ffmpeg -i input.flv -vcodec copy -acodec copy output.flv
    Once I did this and reran FLVCheck Tool, everything passed.
    Now to actually stream the video and see if all is well...
    Thanks everyone for your help!
    Dave

  • Apple tv video quality vs hd tv and high def dvd's

    ok...i know it supports 1080i, but does the video quality of video in itunes really look good compared against say a blu-ray disc, or hdtv signals? i'm sure it will get better (with a hardware or software upgrade?) if its not close to high def quality but want to know what i'm in store for if i buy appletv now...thanks. PS: i currently have directv HD and a ps3 for blu-ray, and my tv's are all HD...

    Based on my own testing, the distinctions between an HD-DVD movie (which are true 1080) and an Apple TV video converted as its own maximum settings (which is 720) is actually quite noticeable if you have a 1080 TV set, but at the same I don't consider it a show-stopper. I watch a lot of HD broadcast content that's only 720p, and it's still very good.
    An HD-DVD or Blu-Ray DVD will normally be in 1920 x 1080 resolution (1080p or 1080i, generally depending on your equipment). The Apple TV's maximum resolution is 1280 x 720 (basically 720p). Therefore, even an original HD-DVD or Blu-Ray DVD converted to Apple TV will need to be scaled down to 720p for display on the Apple TV.
    Further, Elgato EyeTV actually scales these down somewhat lower, so HDTV recorded content could be even worse-off, depending on the original source. The standard Apple TV export settings use a 960 x 540 frame in order to keep the bit-rate and frame rate within tolerances (since a 720p signal is approximately 60fps, and the bitrates will generally exceed 5-6 mbps, which pushes the limits of the Apple TV).
    Even more interestingly, Elgato's new turbo.264 dongle will only encode in "Apple TV" format at a maximum resolution of 800 x 600 (and if you do the math you will realize that this will be considerably less for a 16:9 aspect ratio video).
    The result is that videos converted from an EyeTV Hybrid are technically much worse off on the Apple TV than viewing the original source material. Whether this is significant enough to be noticeable will depend on your output medium, but on my 62" DLP, the difference is quite apparent (although still far superior to an SDTV signal).
    You can get 1280 x 720 content to play back at 60fps at 5mbps bit-rates on the Apple TV by using ffmpeg-based encoders and manually selecting higher settings, although it's been hit-and-miss in my own testing, and of course it creates gargantuan files. Elgato and others have obviously tried to stay with the more conservative settings to ensure that they can guarantee the broadcast possible range of support.
    In fact, although most of the standard encoder settings max out at 2.5-3.0 mbps, I've successfully pushed up to 6 mbps through the Apple TV, although such content has to be synced rather than streamed, since even an 802.11n network has a hard time keeping up (it worked, but there were some drop-outs and glitches in the process). Of course, 6mbps content is going to fill up the Apple TV hard drive pretty quickly as well (you'd only be able to fit around 11 hours on the internal 40GB hard drive).
    The other thing to keep in mind with DVD movies is that they come from film, which is a 24fps source (based on the physical nature of film). As a result, the distinctions between a 720p and 1080i signal are less prevalant when dealing with film content, since you won't get the full 60fps HDTV capabilities anyway. Interlacing can still create some nasty side-effects, but it's far less of an issue when you're dealing with less than half of the normal frames.
    In my own experiences, I have an Apple TV that is connected to a 1080p upscaling DLP TV (native 1080i input, internalized de-interlacing), and a second Apple TV that is connected to a 720p LCD TV. With the first Apple TV, I can notice the difference between 720p and 1080i output settings only when viewing photos, since the remainder of the standard content doesn't exceed 720p anyway. Further, because my TV de-interlaces a 1080i signal to 1080p, I don't get the flicker that is normally associated with a 1080i signal.
    On the second Apple TV, I leave the setting to 720p, since that's the native resolution of the second TV, and I get noticeable interlacing-based flickering on the 1080i, particularly with photo slideshows (mostly in the transitions).

  • Multi-Person iChat Video Quality

    Hi,
    I am using iChat with 2 other person (so a total of 3 people in the video conferencing). What we noticed is that the audio quality remains great. But as soon as the third person joins the video chat, the video quality decrease dramatically.
    Any one experience this problem?
    Thanks.

    Thanks for the reply.
    Have you set the Quicktime setting, goto sys
    prefs/quicktime/streaming/streaming speed set what
    you get from your ISP go no higher then 1.5mbps(dont
    use automatic)
    I didn't know that Quicktime has anything to do with iChat. I will check that tonight.
    In ichats prefs click on video and change bandwidth
    limit to NONE.
    Alread set to NONE so this shouldn't be a problem.
    Also all of you do a speed test
    http://www.speedtest.net/ and tell us the up and
    download speeds are.
    I have done many similar tests and it is consistently rated as "excellent". I will need to do the test to find out the exact rate tonight when I am home.
    So, out of the 3 things, sound like the Quicktime setting is the only one that I have not done.
    Thanks.

  • IChat video quality better with .Mac subscriber than with AIM?

    The quality of my video chats with one brother who also has a .Mac account is noticeably better than my chats with another brother, who uses iChat with an AIM account. I'm in the US, they are both in UK. All of us have almost identical iMacs. The one with the AIM account supposedly has a faster Internet connection. My question: is the video quality of iChat better if both users have .Mac accounts than if one has an AIM account?

    The Screen names make no difference.
    It is about a combination of Proccessor, Video card in iChat 4, internet Connection and settings and the amount of Bandwidth you get out of that connection.
    As Defcom (UK) has said start with those basic Settings.
    In iChat 3 and 2 the Quicktime setting when on Automatic is read as a 0 (zero) and this effectively Caps iChat.
    In iChat 4 the Automatic setting is seen as 384k which is the MINIMUM for a 4 way chat.
    As far as an Internet Connection goes this should be at Least 100k in both Up and Downloads.
    Due to some data stream management to cut down on Peer-to-Peer file Sharing it pays to limit iChat in the Video Section Bandwidth Limit section to slip under the Radar as it were. There are two main ISP doing this Comcast and Road Runner in the States.
    Verizon offer a FioS fibre service that is not that stable in speeds and jumps all over the place which is then too fast for iChat to keep up and that should use the cap in iChat Preferences as well.
    8:08 PM Friday; June 20, 2008

  • Video quality differences (3G DUN vs Road Runner)

    I've always used iChat from my RoadRunner connection and accepted the subpar video quality. The other day I was connected to my 3G (HSDPA) phone and browsing from the airport and fired up ichat and did a test video call to one of the apple3utest IDs... the incoming video was near perfect. There were no jaggies and it looked so perfect. i have taken my home router out of the mix and connected my mac directly to the cable modem and still can't get the video to be comparable. the latency on my 3G tethering connection is good (good for tethering), its usually around 250ms (where as my RoadRunner conneciton is under 100ms).. i just dont' understand why this is such a big difference between the two.

    Realistically it means changing ISP.
    You could try changing the iChat Preferences > Video section > Bandwidth Limit drop down to 500
    I presume you have changed the System Preferences > Quicktime > Streaming tab to 1.5Mbps ?
    2:58 PM Monday; September 17, 2007

  • Opera Mini Video Quality

    Hi All,
    I use a BB 9360 Curve 3G and at times I use Opera Mini which is an amazing browser however when I watch youtube videos on it the quality of the video is pathetic as compared to the video quality when I stream videos on the BIS browser??
    Please suggest if there's any way to enhance the youtube video experience while streaming them from Opera Mini???
    Or if the Bolt browser is better and if compatiable with BB 9360 Curve 3G then can someone please provide me the link to directly download it to my Blackberry. I will be really grateful for that??
    Thanks in advance.

    Hi All,
    No response or suggestions from anyone. Please advise.

  • Improving Video Quality?

    Video quality doesn't appear as good as it did when Steve demonstrated it some time ago when more than two are video chatting. I'm using a PowerMac G5 QUAD with iSight camera and invite the first person on my home network via Bonjour everything looks good, but when I invite the second person on my home network via Bonjour, both invitees pictures go blury. The other two machines are a Core 2 Duo iMac and a Core 2 Duo MacBook with built in cameras. All three machines are connected to the LAN at 1000 Base T speeds and all three are connected to the same Gigabit switch (which is a LinkSys Gigabit switch). All three have Quicktime Streaming configured for 1.5 Mbps/T1/LAN. iChat is configured to not limit the bandwith.
    I would have expected a clear picture when my two guests are connected, but as soon as the second guest connects, the two guest pictures become blury. They also report the same thing. Is there anything else I can do to improve the picture quality? How did Steve obtain such good quality, does anyone know?
    Thanks

    Hi Dnar,
    Do you know what actual throughput you are getting ?
    There might (I stress might) be some improvement over a local network with the very top Quicktime setting but it does seem this is not stable enough for Internet connections
    3:33 PM Saturday; April 21, 2007

  • Video quality difficulties with Vimeo and Youtube sites and with smart phone

    Ever since the Vimeo and Youtube sites have changed, it has been pretty difficult to get the video quality I had before. I'm using Final Cut Express to edit, Quicktime Player to resize the video to 640x480 (is too wide when saving FCE project as Quicktime movie), and Jes Deinterlacer to remove all of the jaggies that the original deinterlacing on FCE doesn't fully do (skateboarding video). I'm aware Final Cut Express 4 is a discontinued product, and Apple support over the phone can't help me. The quality is TERRIBLE on my smart phone, and used to be really good before the site changed. The Vimeo app played my videos very clear. I'm using a MyTouch smart phone. I want to know if the quality being bad on mobile is because of the sites being changed, and if there is anything I can do to get the quality I want. I've worked on this the past three weeks, and this is my final option, so any help would be greatly appreciated. Thanks. Here are the steps I'm using to export (still trying more export options in Jes Deinterlacer).
    Step 1: In FCE, click "File", "Export", "Quicktime Movie". In "Include:", choose "Audio and Video", "All Markers" for "Markers:", and check box "Make Movie Self-Contained".
    Step 2: Open file in QT Player. Click "Window" (at the top between "View" and "Help"), and choose "Show Movie Properties". Click "Video Track", and click "Visual Settings". Change the dimensions (which are supposed to be 720x480 4:3 but the video is stretched). Enter "640 x 480" for "Scaled Size:", then same with "Offset:" Keep "Preserve Aspect Ratio" unchecked, then when finished entering numbers check it (doesn't let you uncheck it which would be best). Check the "High Quality" box if it hasn't already been checked. Close the window, and click "File", and then "Save".
    Step 3: Open file in Jes Deinterlacer. In "Input", check box "Reinterlace Chroma", choose "Video range", and check "Remove Jaggies". For "Project", choose "Deinterlace" and "Use Bottom Field". Check "Adaptive", "Local", and "Filter Chroma". In "Output", choose "Video range". Choose "Export", and "Mpeg-4". For "File Format:" choose "MP4", for "Video Format:" choose "H.264", and for "Data Rate:" enter "2000" for "kbits/sec". Leave "Optimized for:" "Download" as is. Choose "640x480 VGA" for "Image Size:", and "Current" for "Frame Rate:". For "Key Frame:" choose "Every", and enter "24" for "frames". Click "Video Options". Leave the "Main" box checked, and check "Baseline" for "Restrict Profile(s) to:". Choose "Best Quality (Multi-pass)" for "Encoding Mode:". Click "Ok". Click "Audio" (since done with "Video"). For "Audio Format:" choose "AAC-LC (Music), for "Data Rate:" choose "320 kbps", for "Channels:" leave as "Stereo", for "Output Sample Rate:" choose "44.100 kHz", and for "Encoding Quality:" choose "Best". Click "Ok" (leave "Streaming" alone).

    First, I would do a Search on this forum for "FRAPS." There are several articles with comments on the best workflow and also settings for Import and for Export.
    Next, YouTube is trobulesome. First, they re-encode everything and their specs seem to change weekly. It's tough to find out what they want on any given day. I'd go to their site and get the very latest instructions and attempt to duplicate those perfectly, knowing that they might be different tomorrow.
    Good luck with this one, and good luck with the FRAPS footage.
    Hunt

Maybe you are looking for

  • Repoussé with Nvidia GeForce 9600GT 512 Doesn't work?!

    Hey..  i have a problem with Repoussé in Adobe Photoshop CS5 Extended...   The "Repoussé" in 3D tab in Photoshop is Grayed out... This is my system specs: Windows Vista Home Premium  Service Pack 2 2GB DDR2 RAM running at 667 MHZ Intel Core 2 Duo 2.4

  • How to use PrepareStatementAsync statement in windows phone development ?

    Hi, I am new in windows phone 8.1 development. I want to use select query using PrepareStatementAsync. Which namespace or directory i have to use. Please help me.

  • Help on oracle tags inside dynamic pages

    Hi All I have used dynamic pages like this , i create a html form inside a dynamic page on submit of which a procedure gets called & inserts the values in the table. I see some <oracle> tags every time i create a dynamic page but have never used them

  • HR Structual Authorization

    Hi All, Our client has a specific requirement for controlling Structual Authorization. when we create a strucutral profile, we have the Parameter 'Period' which can have following values : Setting      Period of Responsibility <BLANK> ( = all) 01.01.

  • Cannot create invoice

    Hi,   A billing document was created but it was not posted to accounting. This document was cancelled which created a cancelled document (For ex, cancelled doc no. 197865430) which is also not posted to accounting. When i try to create a billing docu