Record webcam audio and video

hi
there is a way to record the stream of webcam without use media server or similars servers?
as3 with flash or air can do that? record both audio and video?
i found a air class that record video capturing bitmap data of each frame and saves to a byte array but no record audio
can i save only the micriphones audio in mp3 without a server?
thankk
gustav

You can use the Flash Media Live Encoder to both stream Live video or as a simple recorder, by unselecting "Stream to FMS" and checking "Save to Disk"
It's free, works well... get it here:
http://www.adobe.com/products/flashmediaserver/flashmediaencoder/
There is also a section here in the Adobe Forums dedicated to the software if you need more info.
Best wishes,
Adninjastrator

Similar Messages

  • Does QT Pro for Mac allow webcast recording of Audio and Video?

    While watching a webcast, say from NY Times, I'd like to record both audio and video via QT Pro (for later viewing). Before I spend $$ to upgrade to QT Pro, can this be done?

    If the file being viewed is loaded via the QuickTime browser plug-in (part of the html page code) then the file can be saved (after it has ben downloaded). If the file isn't loaded by the QuickTime browser plug-in then it can't be saved (locally via the Pro upgrade).
    QuickTime Player Pro can't "record" the screen (QuickTime X can, but only at the screen resolution).
    Look in the Help menu of QuickTime X to learn more about the options.

  • Recording separate audio and video to iMovie?

    I have been experimenting with recording video directly to iMovie with my DV camera instead of using a tape (saves time, as I'd have to import it anyway). I was wondering if there is any way I could record audio from a different source (I have a digidesign MBox) at the same time. This way, I'd have better audio quality and not have to worry about syncing it later. If this isn't possible in iMovie, is there a program that it is possible in (preferably not an expensive program)? Maybe Quicktime Pro can do this?
    Thanks.

    I like Bengt's suggestions. You could try experimenting by opening a second program and record the audio using both iMovie and the microphone input. Since you can mute the camcorder audio in iMovie after syncing, the last challenge is the sync. Seems like a clapboard would work.
    Otherwise, look into a video converter box or something where you can mix the audio and video externally, and have it come into iMovie over Firewire at the same time.
    Or, check over in the Final Cut forum to see about those capabilities.
    Portable hard disk recorders for pros could have separate video/audio inputs.
    Bengt's plugin mic is sounding pretty good about now.
    John

  • NX Ultra Webcam, audio and video not in sync...

    I have a problem with my NX Ultra webcam. When I record video the audio is never in sync with the video. There is always like a 2 or 3 second delay. It's really annoying. Does anyone know of a way to fix this? I have the latest drivers and everything.
    Check out this link to see what I mean...
    http://youtube.com/watch?v=w7IYYi0-ZeM

    BrainDamage,
    Yes, the files are indeed large with no compression. But that confirms that the camera and soundcard are working fine. At this point, you will want to try different compression methods and / or reinstall your video codecs with the latest revisions and see if that improves your sync issue.
    Daniel

  • How do I use my web cam to record audio and video? I can get the video to work but no sound.

    I want to record both audio and video at the same time. The video works fine but not the audio. I do use Skype without any problems using both.

    PwmBoat,
    This made me smile, because things like this do make me smile...  I never make videos on YouCam, but I did this time, so I could test this one out.
    You did not say what webcam software you are using...
    ======================================================================
     Video and audio recording works on YouCam V3.5.1.4606
    Make sure you have turned on a working microphone in Settings:
    YouCam > Right-Side   Settings >
    Right-Side, Lower-Right, Select a working Microphone from the Drop down list
    AND
    CHECK "Capture with audio"
    OK
    You can also buy (for $38 US) YouCam 5.0 from the Cyberlink.com website and it has audio/video and all sorts of other goodies, too.  (They have 3.x as well, but why buy what HP already gives you?)
    ==========================================================================
    I hope this helps!                                 
    We work hard to help!
    Whenever you see a Helpful Post - Click the Kudos Star on the Left as Thanks!
    Did this Post solve your problem?  Mark it “Accept as Solution”!
    Note: You can find the “Accept as Solution” box on threads started by you.
    2012 Year of the Dragon!
    Kind Regards,
    Dragon-Fur

  • Problem with merging incmoing audio and video source

    I am trying to record incoming audio and video data but i ran into a weird problem. The datasources merged fine but during playback of the recorded file the video sometimes turns white while audio still goes. For example, if the audio duration is 10 mins , the file length will be 10 mins but the video shows only like 2 mins and then the rest of file is white with sound in background. i am not sure why its happening... i also tried merging the files after recording audio and video individually but still no\ luck. does anyone know why this is happening? thanks

    I am working on Audio/video conferancing . Before sending Audio/Video data from my side
    to other side I am setting SendStream's setSourceDescription with my own name for CNAME . On reciving side some time i am getting correct CNAME which i set to SourceDescription ,but some time it gives default CNAME which is username@computername in steed of giving CNAME set to my name .
    Can you help me to solve this problem
    Thanks & Regards
    Amol Chandurkar

  • Audio and video not synchronized in recording made with Lync 2013

    There appears to be no forum for the Lync 2013 client yet, so I am posting this in the Lync 2013 server forum.
    Environment: Lync 2013 Server and Lync 2013 32-bit client. Only one Lync pool. Conference call was scheduled using "Lync Meeting" in Outlook about a week before the call. Call recorded on a laptop that was plugged into our LAN with an Ethernet
    cable.
    Problem: User scheduled a conference call with screen sharing (PowerPoint) and recorded the call. The audio and video are not synchronized in the recording. There is several minutes' delay, with the audio lagging behind the PowerPoint. The last slide
    on the call was presented, the call ended, and the presenter ended the recording (I was present for all this and can confirm no user error in these steps); however, in the recording, the slides change before the speaker talks about it, and the last
    couple of minutes are cut off. 
    Any ideas on why this happened? Web research has failed me. Thank you.

    You may need to lower the recording quality as your PC might not be able to keep up the pace.
    Go to Options in Lync client -> Recording -> Select 480p
    Then test again
    - Belgian Unified Communications Community : http://www.pro-lync.be - MCM/MVP/MCT

  • When I import a video recorded in Quicktime, the audio and video don't sync. Any solution?

    When I import a video recorded in Quicktime, the audio and video don't sync. Any solution?

    Where did the media file come from?
    Does it use a variable frame rate?
    What version of Premiere are you using?
    Variable frame rate video problems:
    http://forums.adobe.com/message/4897424#4897424
    http://forums.adobe.com/message/4071506#4071506

  • How to stream audio and video captured from mic and webcam in sync.

    I am working on a video chat project. I need to capture audio and video from mic and webcam and create rtp stream for them. How can I proceed for this. Any source code help will be highly appreciated. Otherwise just guide me how to do this and point to any good resource which is directly related to my need.
    Thanx.

    t.b.m
    As mentioned by you, i am doing exactly like that . I have coded transmitter class. But at the receiver side it is unable to play the stream. I am posting my code . Can you please help with me with any mistake i m making in my code ?? Or with way I should receive stream at receiver side. Plz see my code. I am streaming to ip address 172.31.80.67.
    package heyram;
    import java.util.logging.Level;
    import java.util.logging.Logger;
    import javax.media.control.*;
    import javax.media.protocol.*;
    import javax.media.format.*;
    import java.io.IOException;
    import java.util.Vector;
    import java.net.InetAddress;
    import java.awt.*;
    import java.io.*;
    import java.net.InetAddress;
    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.lang.Thread.*;
    public class HEYRAM{
    Format[] format=new Format[2];
    Vector[] devices=new Vector[2];
    CaptureDeviceInfo[] di=new CaptureDeviceInfo[2];
       SessionManager rtpsm = new com.sun.media.rtp.RTPSessionMgr();
    Processor p=null;
    Processor p1=null;
    boolean result;
    public HEYRAM(String address,int port,int ttl){
        try{
                InetAddress destaddr = InetAddress.getByName(address);
                SessionAddress sessaddr = new SessionAddress(destaddr,
                                                             port,
                                                             destaddr,
                                                             port + 1);
                String cname = rtpsm.generateCNAME();
                    String username = null;
                try {
                username = System.getProperty("user.name");
            } catch (SecurityException e){
                username = "jmf-user";
            // create our local Session Address
            SessionAddress localaddr = new SessionAddress();
                SourceDescription[] userdesclist= new SourceDescription[]
                    new SourceDescription(SourceDescription
                                          .SOURCE_DESC_EMAIL,
                                          "[email protected]",
                                                                     1,
                                          false),
                    new SourceDescription(SourceDescription
                                          .SOURCE_DESC_CNAME,
                                          cname,
                                          1,
                                          false),
                    new SourceDescription(SourceDescription
                                          .SOURCE_DESC_TOOL,
                                          "JMF RTP Player v2.0",
                                          1,
                                          false)
                rtpsm.initSession(localaddr,
                                userdesclist,
                                0.05,
                                0.25);
                rtpsm.startSession(sessaddr,ttl,null);
            } catch (Exception e) {
                System.err.println(e.getMessage());
                //return null;
        // rtpsm.initSession(localAddress, defaultUserDesc, rtcp_bw_fraction, rtcp_sender_bw_fraction);
            // rtpsm.startSession(...);
    public void createVideoSession()
        format[1] = new VideoFormat(VideoFormat.YUV);
        devices[1]= CaptureDeviceManager.getDeviceList( format[1]);
         di[1]= null;
            if (devices[1].size() > 0) {
                 di[1] = (CaptureDeviceInfo)devices[1].elementAt(0);
                  System.out.println(di[1].toString());
            else {
                // exit if we could not find the relevant capture device.
             System.out.println("1234jjfjsajfjasf1");
                System.exit(-1);
            // Create a processor for this capture device & exit if we
            // cannot create it
            try {
                p1 = Manager.createProcessor(di[1].getLocator());
            } catch (IOException e) {
                System.out.println("1234jjfjsajfjasf2");
                System.exit(-1);
            } catch (NoProcessorException e) {
                System.out.println("1234jjfjsajfjasf3");
                System.exit(-1);
            // at this point, we have succesfully created the processor.
            // Realize it and block until it is configured.
           // p1.configure();
         result = waitForState(p1, Processor.Configured);
         if (result == false)
         System.out.println("Couldn't realize processor");
            p1.setContentDescriptor(new ContentDescriptor( ContentDescriptor.RAW_RTP));
            // block until it has been configured
            TrackControl track[] = p1.getTrackControls();
            boolean encodingOk = false;
            // Go through the tracks and try to program one of them to
            // output ULAW_RTP data.
            for (int i = 0; i < track.length; i++) {
                if (!encodingOk && track[i] instanceof FormatControl) {
                    if (((FormatControl)track).
    setFormat( new VideoFormat(VideoFormat.YUV)) == null) {
    track[i].setEnabled(false);
    else {
    encodingOk = true;
    else {
    // we could not set this track to gsm, so disable it
    track[i].setEnabled(false);
    // Realize it and block until it is realized.
    p1.realize();
    result = waitForState(p1, Processor.Realized);
         if (result == false)
         System.out.println("Couldn't realize processor");
    // block until realized.
    // get the output datasource of the processor and exit
    // if we fail
    DataSource ds = null;
    try {
    ds = p1.getDataOutput();
    } catch (NotRealizedError e){
    //System.exit(-1);
    System.out.println("1234jjfjsajfjasf4");
    // Create a SessionManager and hand over the
    // datasource for SendStream creation.
    // The session manager then needs to be initialized and started:
    // rtpsm.initSession(...);
    // rtpsm.startSession(...);
    try {
    (rtpsm.createSendStream(ds, 0)).start();
    } catch (IOException e){
    System.out.println("1234jjfjsajfjasf6");
    e.printStackTrace();
    } catch( UnsupportedFormatException e) {
    System.out.println("1234jjfjsajfjasf7");
    e.printStackTrace();
    public void createAudioSession(){
    format[0] = new AudioFormat("linear",8000,8,1);
    devices[0]= CaptureDeviceManager.getDeviceList( format[0]);                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       

  • Record Audio and Video Simultaneously.

    Hey,
    So I have Quicktime pro and I know how to record a video using my built in camera on the imac.
    I also have logic and am more than capable of recording through various input devices such as mics, keyboards and guitars.
    But how can I record a video of myself and audio input, such as a mic/me talking/whatever at the same time?
    I'm using a digidesign Mbox 2 for my audio input.
    Thanks

    What happens when you set your inputs properly and record a clip in, say, PhotoBooth? Do you get audio and video? It should be pretty much as straightforward as that.

  • Syncing externally recorded audio and video workflow

    I'm looking for advice to sync externally recorded dialogue to video, exporting them, and importing them back into fcp7.
    I've done this before, but not on this large scale.  I have many clips and I did record audio with the camera as well.
    I know how to sync everything up, I'm mostly looking for the best way to combine the footage and export it without loss of quality.  Also wondering if I can keep the in camera audio AND the externally recorded audio.  So, if at the end of the day, I absolutely need to use one or the other, I can choose which one and hide or delete the other. 
    My questions are...
    1. What's the best way for lossless quality re-exporting and importing for this (some fomat that is still editable)?
    2. Is there a way to keep multiple channels of audio (from the camera and the h4n) or do I have to choose before exporting?
    3. Is there a "batch" way to do this?  Does it consist of making multiple sequences?
    Thanks for your help!!!
    J
    I shot it on a PMW  EX3 and the audio was recorded on an H4N, if that helps.

    1. Why are you re-exporting? No, that's not what you do. You use the MERGE CLIPS command. This will make a NEW clip with the audio and video files merged. Typically you have a slate to sync to, or timecode is jam sync'd so the camera and audio recorder have the same timecode. 
    2. When you merge the clip, all the audio channels will be present.
    3. Sorta. If you get PluralEyes that will automatically sync everything...but will do so by making a sequence with the video and audio.  So a sequence of sync'd audio...not a clip. And if you use the sequence as a source, you need to make sure to use the OVERWRITE WITH SEQUENCE CONTENT mapped to the F keys, otherwise FCP will make those nested clips, and nested clips are not a good thing in this case.

  • I'm trying to record audio and video simultaneously using iMovie and an external mic and the computer is picking up the audio but when I replay the video there is no sound. Any ideas?

    Can't get iMovie to record audio and video at the same time using the built in cam and an external mic.

    iMovie works best with uncompressed audio. If your track is MP3 or AAC, you may get better results by converting your track to the AIFF format and then using that in iMovie.
    You can do this in iTunes. Go to iTunes/Preferences and click the General button. On the General page, click the Import Settings button. Choose IMPORT USING: AIFF ENCODER.
    (note: remember what you changed it from so you can change it back later, before you import another CD)
    Now, in iTunes, select your track. Then click FILE/CREATE NEW VERSION/AIFF VERSION.

  • HT1267 i have purchase an iphone but no audio and video are available with it .can i record video and audio by this device

    i have purchase an iphone. but no audio and video are available with it .can i record video and audio by this device
    <Personal Information Edited by Host>

    Hello JessCastle,
    Start with the article below to troubleshoot issues with the microphone on your iPhone. If none of it works then contact Apple Support to further help you out. 
    If your voice is too faint or sounds unclear using iPhone, or iPod touch
    http://support.apple.com/en-us/HT203792
    Take it easy,
    -Norm G. 

  • Trying to record Stereo Mix with a monitor through my headphones.  Using Screenium to record Audio and Video, using Avid MBox Mini with MXL 909 Microphone for the audio through the interface.

    Basically, what I am trying to do is this:
    Record my screen through Screeenium, record my voice as audio through an Avid MBox Mini (interface) with a MXL 909 microphone to pick up the audio.  I have all that figured out.  I'm able to efficiently record my audio and screenplay through these instruments and programs.  What I am having trouble with is the stereo mix.  I am running into a slew of problems here... My goal: Add on the audio of a game that I am playing (for example, Amneisia) so that the audio for my game will be picked up internally, and not through the speakers to be recorded through the microphone.  I want there to be no external sound except me talking into my microphone.  I also want to be able to HEAR the audio of the game through my headphones (and if possible, myself as well, through a monitor maybe?)
    Problems I have run into so far:
    -Haven't gotten it to pick up in game audio at all while using headphone.  Can't figure this out
         -Downloaded soundflower, have the output as soundflower.  Not picking up anything, will put all my sound and midi settings at the end.
    -When I do record through my microphone, it is only picking up a single channel (left earpiece only, no right channel)
         -I have figured out it is NOT the equipment, I use Pro Tools and am able to pick up both channels with my mic, recorded a few tests. It's settings and I can't      figure it out
    -Trying not to run 16 million programs while running the game, will cause lag.
    Summed up:
    Trying to record:
    -Audio from gameplay of any game I am playing through alternative route of speakers (do NOT want to record game audio through speakers, internally)
    -Record voice through Avid MBox Mini and MXL 909 microphone.
    -Record screen gameplay through Screenium
    I followed a guide that told me to achieve "stereo mix'' I need to download soundflower and follow "X" steps.  That is done and these are my current settings:
    Audio Midi Setup - Stereo Mix custom Aggregate Device, Soundflower (2ch) selected, Avid Mbox Mini selected, Soundflower Output #1 has 2 channels (1-2), using Avid MBox mini for "Input" in order to record.  Using Soundflower AND Avid MBox mini as "Output" in order to hear the sounds and replay game sounds (could be the problem? Maybe?)
    Sound Settings - Output Stereo Mix (custom channel)  Input Avid MBox Mini (recording)
    I'm hoping this isn't too hard to understand.. I'm VERY bad at explaining information regarding computers.. It's hard becuase I don't understand it.  I can clarify anything that I am able to, so any help on finding certain things would be greatly appreciated.
    My computer: Macbook Pro MAC OS X Lion (11G63) 10.7.5  2.4 GHz Intel Core i7 4GB 13333 MGz DDR3  (If any of this is imporant)

    Hey guys,
    I tried to do some research and it looks like you need to have an external device and its drivers, such as an external microphone, installed on the computer to record audio that can be saved as a sound file. Another Suggestion is to try an auxiliary spliter for your headphones and external speakers?
    What software are you using to record your game?
    If anyone knows anything different, please let me know.
    Thank you for being a part of the Lenovo Family,
    Catie
    Did someone help you today? Press the star on the left to thank them with a Kudo!
    If you find a post helpful and it answers your question, please mark it as an "Accepted Solution"! This will help the rest of the Community with similar issues identify the verified solution and benefit from it.
    Donate KUDOS and Click "Accepted Solution"

  • Extra hardware interface for transmiting both Audio and video to client ??

    hi i m doing e-learning project. i have to capture video from webcam and voice from headphone and send to client.
    but my code is working fine for either one at a time.
    DO i need some extra hardware interface for Transmitting  both Audio and video to client im using code AVTransmit and AVReceive found from this site only
    After running TX
    i give dsound:// & vfw://0 in Media Locater only sound is received and no vedio
    and when i give vfw://0 in Media Locater only live video is transmited.
    im using JMF1.1.2e.
    if any one know the method to run or cause of it plz reply me soon. i will be very thankfull
    transmiter/server side code .first run TX on server
    import java.io.*;
    import java.awt.*;
    import java.awt.event.*;
    import java.net.*;
    import java.util.*;
    import javax.media.rtp.*;
    import javax.swing.*;
    import javax.swing.event.*;
    import javax.swing.border.*;
    public class Tx extends JFrame implements ActionListener, KeyListener,
    MouseListener, WindowListener {
    Vector targets;
    JList list;
    JButton startXmit;
    JButton rtcp;
    JButton update;
    JButton expiration;
    JButton statistics;
    JButton addTarget;
    JButton removeTarget;
    JTextField tf_remote_address;
    JTextField tf_remote_data_port;
    JTextField tf_media_file;
    JTextField tf_data_port;
    TargetListModel listModel;
    AVTransmitter avTransmitter;
    RTCPViewer rtcpViewer;
    JCheckBox cb_loop;
    Config config;
    public Tx() {
    setTitle( "JMF/RTP Transmitter");
    config= new Config();
    GridBagLayout gridBagLayout= new GridBagLayout();
    GridBagConstraints gbc;
    JPanel p= new JPanel();
    p.setLayout( gridBagLayout);
    JPanel localPanel= createLocalPanel();
    gbc= new GridBagConstraints();
    gbc.gridx= 0;
    gbc.gridy= 0;
    gbc.gridwidth= 2;
    gbc.anchor= GridBagConstraints.CENTER;
    gbc.fill= GridBagConstraints.BOTH;
    gbc.insets= new Insets( 10, 5, 0, 0);
    ((GridBagLayout)p.getLayout()).setConstraints( localPanel, gbc);
    p.add( localPanel);
    JPanel targetPanel= createTargetPanel();
    gbc= new GridBagConstraints();
    gbc.gridx= 1;
    gbc.gridy= 1;
    gbc.weightx= 1.0;
    gbc.weighty= 1.0;
    gbc.anchor= GridBagConstraints.CENTER;
    gbc.fill= GridBagConstraints.BOTH;
    gbc.insets= new Insets( 10, 5, 0, 0);
    ((GridBagLayout)p.getLayout()).setConstraints( targetPanel, gbc);
    p.add( targetPanel);
    JPanel mediaPanel= createMediaPanel();
    gbc= new GridBagConstraints();
    gbc.gridx= 1;
    gbc.gridy= 2;
    gbc.weightx= 1.0;
    gbc.weighty= 1.0;
    gbc.anchor= GridBagConstraints.CENTER;
    gbc.fill= GridBagConstraints.BOTH;
    gbc.insets= new Insets( 10, 5, 0, 0);
    ((GridBagLayout)p.getLayout()).setConstraints( mediaPanel, gbc);
    p.add( mediaPanel);
    JPanel buttonPanel= new JPanel();
    rtcp= new JButton( "RTCP Monitor");
    update= new JButton( "Transmission Status");
    update.setEnabled( false);
    rtcp.addActionListener( this);
    update.addActionListener( this);
    buttonPanel.add( rtcp);
    buttonPanel.add( update);
    gbc= new GridBagConstraints();
    gbc.gridx = 0;
    gbc.gridy = 3;
    gbc.gridwidth= 2;
    gbc.weightx = 1.0;
    gbc.weighty = 0.0;
    gbc.anchor = GridBagConstraints.CENTER;
    gbc.fill = GridBagConstraints.HORIZONTAL;
    gbc.insets = new Insets( 5,5,10,5);
    ((GridBagLayout)p.getLayout()).setConstraints( buttonPanel, gbc);
    p.add( buttonPanel);
    getContentPane().add( p);
    list.addMouseListener( this);
    addWindowListener( this);
    pack();
    setVisible( true);
    private JPanel createMediaPanel() {
    JPanel p= new JPanel();
    GridBagLayout gridBagLayout= new GridBagLayout();
    GridBagConstraints gbc;
    p.setLayout( gridBagLayout);
    JLabel label= new JLabel( "Media Locator:");
    gbc= new GridBagConstraints();
    gbc.gridx = 0;
    gbc.gridy = 0;
    gbc.weightx = 0.0;
    gbc.weighty = 0.0;
    gbc.anchor = GridBagConstraints.EAST;
    gbc.fill = GridBagConstraints.NONE;
    gbc.insets = new Insets( 5,5,10,5);
    ((GridBagLayout)p.getLayout()).setConstraints( label, gbc);
    p.add( label);
    tf_media_file= new JTextField( 35);
    gbc= new GridBagConstraints();
    gbc.gridx = 1;
    gbc.gridy = 0;
    gbc.weightx = 1.0;
    gbc.weighty = 0.0;
    gbc.anchor = GridBagConstraints.WEST;
    gbc.fill = GridBagConstraints.HORIZONTAL;
    gbc.insets = new Insets( 5,5,10,5);
    ((GridBagLayout)p.getLayout()).setConstraints( tf_media_file, gbc);
    p.add( tf_media_file);
    tf_media_file.setText( config.media_locator);
    cb_loop= new JCheckBox( "loop");
    startXmit= new JButton( "Start Transmission");
    startXmit.setEnabled( true);
    startXmit.addActionListener( this);
    gbc= new GridBagConstraints();
    gbc.gridx = 2;
    gbc.gridy = 0;
    gbc.weightx = 0.0;
    gbc.weighty = 0.0;
    gbc.anchor = GridBagConstraints.WEST;
    gbc.fill = GridBagConstraints.NONE;
    gbc.insets = new Insets( 5,5,10,5);
    ((GridBagLayout)p.getLayout()).setConstraints( cb_loop, gbc);
    p.add( cb_loop);
    cb_loop.setSelected( true);
    cb_loop.addActionListener( this);
    gbc= new GridBagConstraints();
    gbc.gridx = 1;
    gbc.gridy = 1;
    gbc.weightx = 0.0;
    gbc.weighty = 0.0;
    gbc.anchor = GridBagConstraints.CENTER;
    gbc.fill = GridBagConstraints.NONE;
    gbc.insets = new Insets( 5,5,10,5);
    ((GridBagLayout)p.getLayout()).setConstraints( startXmit, gbc);
    p.add( startXmit);
    TitledBorder titledBorder= new TitledBorder( new EtchedBorder(), "Source");
    p.setBorder( titledBorder);
    return p;
    private JPanel createTargetPanel() {
    JPanel p= new JPanel();
    GridBagLayout gridBagLayout= new GridBagLayout();
    GridBagConstraints gbc;
    p.setLayout( gridBagLayout);
    targets= new Vector();
    for( int i= 0; i < config.targets.size(); i++) {
    targets.addElement( config.targets.elementAt( i));
    listModel= new TargetListModel( targets);
    list= new JList( listModel);
    list.addKeyListener( this);
    list.setPrototypeCellValue( "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx");
    JScrollPane scrollPane= new JScrollPane( list,
    ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED,
    ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
    gbc= new GridBagConstraints();
    gbc.gridx= 0;
    gbc.gridy= 0;
    gbc.weightx= 1.0;
    gbc.weighty= 1.0;
    gbc.anchor= GridBagConstraints.CENTER;
    gbc.fill= GridBagConstraints.BOTH;
    gbc.insets= new Insets( 10, 5, 0, 0);
    ((GridBagLayout)p.getLayout()).setConstraints( scrollPane, gbc);
    p.add( scrollPane);
    JPanel p1= new JPanel();
    p1.setLayout( gridBagLayout);
    JLabel label= new JLabel( "IP Address:");
    gbc= new GridBagConstraints();
    gbc.gridx = 0;
    gbc.gridy = 0;
    gbc.weightx = 0.0;
    gbc.weighty = 0.0;
    gbc.anchor = GridBagConstraints.EAST;
    gbc.fill = GridBagConstraints.NONE;
    gbc.insets = new Insets( 5,5,0,5);
    ((GridBagLayout)p1.getLayout()).setConstraints( label, gbc);
    p1.add( label);
    tf_remote_address= new JTextField( 15);
    gbc= new GridBagConstraints();
    gbc.gridx = 1;
    gbc.gridy = 0;
    gbc.weightx = 0.0;
    gbc.weighty = 0.0;
    gbc.anchor = GridBagConstraints.WEST;
    gbc.fill = GridBagConstraints.NONE;
    gbc.insets = new Insets( 5,5,0,5);
    ((GridBagLayout)p1.getLayout()).setConstraints( tf_remote_address, gbc);
    p1.add( tf_remote_address);
    label= new JLabel( "Data Port:");
    gbc= new GridBagConstraints();
    gbc.gridx = 0;
    gbc.gridy = 1;
    gbc.weightx = 0.0;
    gbc.weighty = 0.0;
    gbc.anchor = GridBagConstraints.EAST;
    gbc.fill = GridBagConstraints.NONE;
    gbc.insets = new Insets( 5,5,0,5);
    ((GridBagLayout)p1.getLayout()).setConstraints( label, gbc);
    p1.add( label);
    tf_remote_data_port= new JTextField( 15);
    gbc= new GridBagConstraints();
    gbc.gridx = 1;
    gbc.gridy = 1;
    gbc.weightx = 0.0;
    gbc.weighty = 0.0;
    gbc.anchor = GridBagConstraints.WEST;
    gbc.fill = GridBagConstraints.NONE;
    gbc.insets = new Insets( 5,5,0,5);
    ((GridBagLayout)p1.getLayout()).setConstraints( tf_remote_data_port, gbc);
    p1.add( tf_remote_data_port);
    JPanel p2= new JPanel();
    addTarget= new JButton( "Add Target");
    removeTarget= new JButton( "Remove Target");
    p2.add( addTarget);
    p2.add( removeTarget);
    addTarget.addActionListener( this);
    removeTarget.addActionListener( this);
    gbc= new GridBagConstraints();
    gbc.gridx = 0;
    gbc.gridy = 2;
    gbc.weightx = 1.0;
    gbc.weighty = 0.0;
    gbc.gridwidth= 2;
    gbc.anchor = GridBagConstraints.CENTER;
    gbc.fill = GridBagConstraints.HORIZONTAL;
    gbc.insets = new Insets( 20,5,0,5);
    ((GridBagLayout)p1.getLayout()).setConstraints( p2, gbc);
    p1.add( p2);
    gbc= new GridBagConstraints();
    gbc.gridx= 1;
    gbc.gridy= 0;
    gbc.weightx= 1.0;
    gbc.weighty= 1.0;
    gbc.anchor= GridBagConstraints.CENTER;
    gbc.fill= GridBagConstraints.BOTH;
    gbc.insets= new Insets( 10, 5, 0, 0);
    ((GridBagLayout)p.getLayout()).setConstraints( p1, gbc);
    p.add( p1);
    TitledBorder titledBorder= new TitledBorder( new EtchedBorder(), "Targets");
    p.setBorder( titledBorder);
    return p;
    private JPanel createLocalPanel() {
    JPanel p= new JPanel();
    GridBagLayout gridBagLayout= new GridBagLayout();
    GridBagConstraints gbc;
    p.setLayout( gridBagLayout);
    JLabel label= new JLabel( "IP Address:");
    gbc= new GridBagConstraints();
    gbc.gridx = 0;
    gbc.gridy = 0;
    gbc.weightx = 0.0;
    gbc.weighty = 0.0;
    gbc.anchor = GridBagConstraints.EAST;
    gbc.fill = GridBagConstraints.NONE;
    gbc.insets = new Insets( 5,5,0,5);
    ((GridBagLayout)p.getLayout()).setConstraints( label, gbc);
    p.add( label);
    JTextField tf_local_host= new JTextField( 15);
    gbc= new GridBagConstraints();
    gbc.gridx = 1;
    gbc.gridy = 0;
    gbc.weightx = 0.0;
    gbc.weighty = 0.0;
    gbc.anchor = GridBagConstraints.WEST;
    gbc.fill = GridBagConstraints.NONE;
    gbc.insets = new Insets( 5,5,0,5);
    ((GridBagLayout)p.getLayout()).setConstraints( tf_local_host, gbc);
    p.add( tf_local_host);
    try {
    String host= InetAddress.getLocalHost().getHostAddress();
    tf_local_host.setText( host);
    } catch( UnknownHostException e) {
    label= new JLabel( "Data Port:");
    gbc= new GridBagConstraints();
    gbc.gridx = 0;
    gbc.gridy = 1;
    gbc.weightx = 0.0;
    gbc.weighty = 0.0;
    gbc.anchor = GridBagConstraints.EAST;
    gbc.fill = GridBagConstraints.NONE;
    gbc.insets = new Insets( 5,5,0,5);
    ((GridBagLayout)p.getLayout()).setConstraints( label, gbc);
    p.add( label);
    tf_data_port= new JTextField( 15);
    gbc= new GridBagConstraints();
    gbc.gridx = 1;
    gbc.gridy = 1;
    gbc.weightx = 0.0;
    gbc.weighty = 0.0;
    gbc.anchor = GridBagConstraints.WEST;
    gbc.fill = GridBagConstraints.NONE;
    gbc.insets = new Insets( 5,5,10,5);
    ((GridBagLayout)p.getLayout()).setConstraints( tf_data_port, gbc);
    p.add( tf_data_port);
    tf_data_port.setText( config.local_data_port);
    TitledBorder titledBorder= new TitledBorder( new EtchedBorder(), "Local Host");
    p.setBorder( titledBorder);
    return p;
    public void actionPerformed( ActionEvent event) {
    Object source= event.getSource();
    if( source == addTarget) {
    String ip= tf_remote_address.getText().trim();
    String port= tf_remote_data_port.getText().trim();
    String localPort= tf_data_port.getText().trim();
    addTargetToList( localPort, ip, port);
    if( avTransmitter != null) {
    avTransmitter.addTarget( ip, port);
    } else if( source == removeTarget) {
    int index= list.getSelectedIndex();
    if( index != -1) {
    Target target= (Target) targets.elementAt( index);
    if( avTransmitter != null) {
    avTransmitter.removeTarget( target.ip, target.port);
    targets.removeElement( target);
    listModel.setData( targets);
    } else if( source == startXmit) {
    if( startXmit.getLabel().equals( "Start Transmission")) {
    int data_port= new Integer( tf_data_port.getText()).intValue();
    avTransmitter= new AVTransmitter( this, data_port);
    avTransmitter.start( tf_media_file.getText().trim(), targets);
    avTransmitter.setLooping( cb_loop.isSelected());
    startXmit.setLabel( "Stop Transmission");
    } else if( startXmit.getLabel().equals( "Stop Transmission")) {
    avTransmitter.stop();
    avTransmitter= null;
    removeNonBaseTargets();
    listModel.setData( targets);
    startXmit.setLabel( "Start Transmission");
    } else if( source == rtcp) {
    if( rtcpViewer == null) {
    rtcpViewer= new RTCPViewer();
    } else {
    rtcpViewer.setVisible( true);
    rtcpViewer.toFront();
    } else if( source == cb_loop) {
    if( avTransmitter != null) {
    avTransmitter.setLooping( cb_loop.isSelected());
    private void removeNonBaseTargets() {
    String localPort= tf_data_port.getText().trim();
    for( int i= targets.size(); i > 0;) {
    Target target= (Target) targets.elementAt( i - 1);
    if( !target.localPort.equals( localPort)) {
    targets.removeElement( target);
    i--;
    public void addTargetToList( String localPort,
    String ip, String port) {
    ListUpdater listUpdater= new ListUpdater( localPort, ip,
    port, listModel, targets);
    SwingUtilities.invokeLater( listUpdater);
    public void rtcpReport( String report) {
    if( rtcpViewer != null) {
    rtcpViewer.report( report);
    public void windowClosing( WindowEvent event) {
    config.local_data_port= tf_data_port.getText().trim();
    config.targets= new Vector();
    for( int i= 0; i < targets.size(); i++) {
    Target target= (Target) targets.elementAt( i);
    if( target.localPort.equals( config.local_data_port)) {
    config.addTarget( target.ip, target.port);
    config.media_locator= tf_media_file.getText().trim();
    config.write();
    System.exit( 0);
    public void windowClosed( WindowEvent event) {
    public void windowDeiconified( WindowEvent event) {
    public void windowIconified( WindowEvent event) {
    public void windowActivated( WindowEvent event) {
    public void windowDeactivated( WindowEvent event) {
    public void windowOpened( WindowEvent event) {
    public void keyPressed( KeyEvent event) {
    public void keyReleased( KeyEvent event) {
    Object source= event.getSource();
    if( source == list) {
    int index= list.getSelectedIndex();
    public void keyTyped( KeyEvent event) {
    public void mousePressed( MouseEvent e) {
    public void mouseReleased( MouseEvent e) {
    public void mouseEntered( MouseEvent e) {
    public void mouseExited( MouseEvent e) {
    public void mouseClicked( MouseEvent e) {
    Object source= e.getSource();
    if( source == list) {
    int index= list.getSelectedIndex();
    if( index != -1) {
    Target target= (Target) targets.elementAt( index);
    tf_remote_address.setText( target.ip);
    tf_remote_data_port.setText( target.port);
    int index= list.locationToIndex( e.getPoint());
    public static void main( String[] args) {
    new Tx();
    class TargetListModel extends AbstractListModel {
    private Vector options;
    public TargetListModel( Vector options) {
    this.options= options;
    public int getSize() {
    int size;
    if( options == null) {
    size= 0;
    } else {
    size= options.size();
    return size;
    public Object getElementAt( int index) {
    String name;
    if( index < getSize()) {
    Target o= (Target)options.elementAt( index);
    name= o.localPort + " ---> " + o.ip + ":" + o.port;
    } else {
    name= null;
    return name;
    public void setData( Vector data) {
    options= data;
    fireContentsChanged( this, 0, data.size());
    class ListUpdater implements Runnable {
    String localPort, ip, port;
    TargetListModel listModel;
    Vector targets;
    public ListUpdater( String localPort, String ip, String port,
    TargetListModel listModel, Vector targets) {
    this.localPort= localPort;
    this.ip= ip;
    this.port= port;
    this.listModel= listModel;
    this.targets= targets;
    public void run() {
    Target target= new Target( localPort, ip, port);
    if( !targetExists( localPort, ip, port)) {
    targets.addElement( target);
    listModel.setData( targets);
    public boolean targetExists( String localPort, String ip, String port) {
    boolean exists= false;
    for( int i= 0; i < targets.size(); i++) {
    Target target= (Target) targets.elementAt( i);
    if( target.localPort.equals( localPort)
    && target.ip.equals( ip)
    && target.port.equals( port)) {
    exists= true;
    break;
    return exists;
    import java.awt.*;
    import java.io.*;
    import java.net.InetAddress;
    import java.util.*;
    import javax.media.*;
    import javax.media.protocol.*;
    import javax.media.format.*;
    import javax.media.control.TrackControl;
    import javax.media.control.QualityControl;
    import javax.media.rtp.*;
    import javax.media.rtp.event.*;
    import javax.media.rtp.rtcp.*;
    public class AVTransmitter implements ReceiveStreamListener, RemoteListener,
    ControllerListener {
    // 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 int localPorts[];
    private DataSource dataOutput = null;
    private int local_data_port;
    private Tx tx;
    public AVTransmitter( Tx tx, int data_port) {
    this.tx= tx;
    local_data_port= data_port;
    * 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 filename, Vector targets) {
    String result;
    locator= new MediaLocator( filename);
    // 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( targets);
    if (result != null) {
    processor.close();
    processor = null;
    return result;
    // Start the transmission
    processor.start();
    return null;
    * Use the RTPManager API to create sessions for each media
    * track of the processor.
    private String createTransmitter( Vector targets) {
    // Cheated. Should have checked the type.
    PushBufferDataSource pbds = (PushBufferDataSource)dataOutput;
    PushBufferStream pbss[] = pbds.getStreams();
    rtpMgrs = new RTPManager[pbss.length];
    localPorts = new int[ pbss.length];
    SessionAddress localAddr, destAddr;
    InetAddress ipAddr;
    SendStream sendStream;
    int port;
    SourceDescription srcDesList[];
    for (int i = 0; i < pbss.length; i++) {
    // for (int i = 0; i < 1; i++) {
    try {
    rtpMgrs[i] = RTPManager.newInstance();
    port = local_data_port + 2*i;
    localPorts[ i]= port;
    localAddr = new SessionAddress( InetAddress.getLocalHost(),
    port);
    rtpMgrs.initialize( localAddr);
    rtpMgrs[i].addReceiveStreamListener(this);
    rtpMgrs[i].addRemoteListener(this);
    for( int k= 0; k < targets.size(); k++) {
    Target target= (Target) targets.elementAt( k);
    int targetPort= new Integer( target.port).intValue();
    addTarget( localPorts[ i], rtpMgrs[ i], target.ip, targetPort + 2*i);
    sendStream = rtpMgrs[i].createSendStream(dataOutput, i);
    sendStream.start();
    } catch (Exception e) {
    e.printStackTrace();
    return e.getMessage();
    return null;
    public void addTarget( String ip, String port) {
    for (int i= 0; i < rtpMgrs.length; i++) {
    int targetPort= new Integer( port).intValue();
    addTarget( localPorts[ i], rtpMgrs[ i], ip, targetPort + 2*i);
    public void addTarget( int localPort, RTPManager mgr, String ip, int port) {
    try {
    SessionAddress addr= new SessionAddress( InetAddress.getByName( ip),
    new Integer( port).intValue());
    mgr.addTarget( addr);
    tx.addTargetToList( localPort + "", ip, port + "");
    } catch( Exception e) {
    e.printStackTrace();
    public void removeTarget( String ip, String port) {
    try {
    SessionAddress addr= new SessionAddress( InetAddress.getByName( ip),
    new Integer( port).intValue());
    for (int i= 0; i < rtpMgrs.length; i++) {
    rtpMgrs[ i].removeTarget( addr, "target removed from transmitter.");
    } catch( Exception e) {
    e.printStackTrace();
    boolean looping= true;
    public void controllerUpdate( ControllerEvent ce) {
    System.out.println( ce);
    if( ce instanceof DurationUpdateEvent) {
    Time duration= ((DurationUpdateEvent) ce).getDuration();
    System.out.println( "duration: " + duration.getSeconds());
    } else if( ce instanceof EndOfMediaEvent) {
    System.out.println( "END OF MEDIA - looping=" + looping);
    if( looping) {
    processor.setMediaTime( new Time( 0));
    processor.start();
    public void setLooping( boolean flag) {
    looping= flag;
    public void update( ReceiveStreamEvent event) {
    String timestamp= getTimestamp();
    StringBuffer sb= new StringBuffer();
    if( event instanceof InactiveReceiveStreamEvent) {
    sb.append( timestamp + " Inactive Receive Stream");
    } else if( event instanceof ByeEvent) {
    sb.append( timestamp + " Bye");
    } else {
    System.out.println( "ReceiveStreamEvent: "+ event);
    tx.rtcpReport( sb.toString());
    public void update( RemoteEvent event) {
    String timestamp= getTimestamp();
    if( event instanceof ReceiverReportEvent) {
    ReceiverReport rr= ((ReceiverReportEvent) event).getReport();
    StringBuffer sb= new StringBuffer();
    sb.append( timestamp + " RR");
    if( rr != null) {
    Participant participant= rr.getParticipant();
    if( participant != null) {
    sb.append( " from " + participant.getCNAME());
    sb.append( " ssrc=" + rr.getSSRC());
    } else {
    sb.append( " ssrc=" + rr.getSSRC());
    tx.rtcpReport( sb.toString());
    } else {
    System.out.println( "RemoteEvent: " + event);
    private String getTimestamp() {
    String timestamp;
    Calendar calendar= Calendar.getInstance();
    int hour= calendar.get( Calendar.HOUR_OF_DAY);
    String hourStr= formatTime( hour);
    int minute= calendar.get( Calendar.MINUTE);
    String minuteStr= formatTime( minute);
    int second= calendar.get( Calendar.SECOND);
    String secondStr= formatTime( second);
    timestamp= hourStr + ":" + minuteStr + ":" + secondStr;
    return timestamp;
    private String formatTime( int time) {
    String timeStr;
    if( time < 10) {
    timeStr= "0" + time;
    } else {
    timeStr= "" + time;
    return timeStr;
    * 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[ i].removeTargets( "Session ended.");
    rtpMgrs[ i].dispose();
    public String createProcessor() {
    if (locator == null) {
    return "Locator is null";
    DataSource ds;
    DataSource clone;
    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);
    processor.addControllerListener( this);
    } 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;
    boolean atLeastOneTrack = false;
    // Program the tracks.
    for (int i = 0; i < tracks.length; i++) {
    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) {
    if (supported[0] instanceof VideoFormat) {
    // For video formats, we should double check the
    // sizes since not all formats work in all sizes.
    chosen = checkForVideoSizes(tracks[i].getFormat(),
    supported[0]);
    } else
    chosen = supported[0];
    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;
    static SessionAddress destAddr1, destAddr2;
    * 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 {
    width = 352;
    height = 288;
    } 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();
    import java.io.*;
    import java.util.*;
    public class Config {
    private String pathPrefix;
    public String local_data_port;
    public Vector targets;
    public String media_locator;
    public Config() {
    pathPrefix= System.getProperty( "user.home") + File.separator;
    read();
    public void read() {
    targets= new Vector();
    try {
    String path= pathPrefix + "xmit.dat";
    FileInputStream fin= new FileInputStream( path);
    BufferedInputStream bin= new BufferedInputStream( fin);
    DataInputStream din= new DataInputStream( bin);
    local_data_port= readString( din);
    int n_targets= din.readInt();
    for( int i= 0; i < n_targets; i++) {
    String ip= readString( din);
    String port= readString( din);
    targets.addElement( new Target( local_data_port, ip, port));
    media_locator= readString( din);
    fin.close();
    } catch( IOException e) {
    System.out.println( "xmit.dat file missing!");
    local_data_port= "";
    media_locator= "";
    public void write() {
    try {
    String path= pathPrefix + "xmit.dat";
    FileOutputStream fout= new FileOutputStream( path);
    BufferedOutputStream bout= new BufferedOutputStream( fout);
    DataOutputStream dout= new DataOutputStream( bout);
    writeString( dout, local_data_port);
    dout.writeInt( targets.size());
    for( int i= 0; i < targets.size(); i++) {
    Target target= (Target) targets.elementAt( i);
    writeString( dout, target.ip);
    writeString( dout, target.port);
    writeString( dout, media_locator);
    dout.flush();
    dout.close();
    fout.close();
    } catch( IOException e) {
    System.out.println( "Error writing xmit.dat!");
    public String readString( DataInputStream din) {
    String s= null;
    try {
    short length= din.readShort();
    if( length > 0) {
    byte buf[]= new byte[ length];
    din.read( buf, 0, length);
    s= new String( buf);
    } catch( IOException e) {
    System.err.println( e);
    return s;
    public void writeString( DataOutputStream dout, String str) {
    try {
    if( str != null) {
    dout.writeShort( str.length());
    dout.writeBytes( str);
    } else {
    dout.writeShort( 0);
    } catch( Exception e) {
    e.printStackTrace();
    public void addTarget( String ip, String port) {
    targets.addElement( new Target( "", ip, port));
    import java.io.*;
    import java.awt.*;
    import java.awt.event.*;
    import java.net.*;
    import java.util.*;
    import javax.media.rtp.*;
    import javax.swing.*;
    import javax.swing.event.*;
    import javax.swing.border.*;
    public class RTCPViewer extends JFrame implements ActionListener, KeyListener,
    MouseListener, WindowListener {
    private JList list;
    private Vector reports;
    private RtcpListModel listModel;
    private JButton clear;
    private JButton start;
    private boolean recording;
    public RTCPViewer() {
    setTitle( "JMF/RTCP Tracer");
    re

    I'm also getting some really bad sound quality on facebook notifications. I've been forced to disable them they sound horrible like they are clipping.
    Trying to figure out if this is a problem on all Late 2013 15" macbook pros or if mine is defective? This occurs even at around 20-30% volume levels with the Facebook notification sound problems...

Maybe you are looking for

  • Pictures not showing up online.

    Some pictures are not showing up for me online. For example, when I do a search on photobucket, I just get a ton of little blue boxes with question marks where the pictures should be displayed. Help please?

  • Sales employee number range

    Dear experts, Under the same client in SAP system, can different company codes have different sales employee number ranges? If yes, should I just activate the number range? You know, there's no number range assignement to company codes. Plz help. Man

  • Unicode datatypes v.s. unicode databases

    We have a legacy system that is implemented in Powerbuilder and C++. We are pretty sure about which columns we need to convert to support Unicode. Besides, some of our clients have cooperate standard (AMERICAN_AMERICA.WE8MSWIN1252) for the NLS_LANG o

  • Reinstalling Photoshop Elements 8

    My laptop had died. How do I reinstal  Elements 8 on my new computer using the serial number.

  • Import / ORDER_ENTRY_BAPI_FAILURE_CUST

    I keep getting a field in 5th entry in T_Z1VW03STAK-screen that is ORDER_ENTRY_BAPI_FAILURE_CUST . I want to see exactly how it gets this? Anyway to debug inside the import/ It is causing my order not to be created. The code.... Import T_Z1VW03STAK F