Audio and Video Programming

hey Can u guys tell me how can i browse some songs in Java and Play it in a Applet TEll me Fasst

javax.media, is a package that is downloadable. I've never used it but thats what you use. And if its wav files, or au files, just look at javax.sound.sampled.*

Similar Messages

  • DO i need some extra hardware interface for receving both Audio and video

    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 receving both Audio and video. 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
         // realiz

    I do this all the time, I put my MBP to a 60 inch Sharp. If you have the video working do the simple thing first. Check to make sure your sound is on your TV and Mac. Then if that doesn't work go to System Prefrences and under sound go to a tab called Output and see if your TV is listed and if it is change it to that setting
    Hope It Works

  • HOW DO I FIND THE DRIVERS FOR WINDOWS 8 AUDIO AND VIDEO TO UNINSTALL?

    I NEED TO INSTALL AND UNINSTALL WINDOWS 8 DRIVERS FOR AUDIO AND VIDEO SO THAT I MAY REINSTALL THEM, BUT I DON'T KNOW WHERE TO GO TO FIND THEM IN THE FIRST PLACE.
    ALSO, IF I PURCHASE THE PROGRAM FOR UPDATING DRIVERS, WILL THAT PROGRAM ALSO INSTALL THE NEW AUDIO/VIDEO DRIVERS AND UNINSTALL THE FORMER ONES SO THAT I DON'T HAVE TO GO THROUGH SO MANY STEPS BY MYSELF. I FIND THE DIRECTIONS TO DO THIS FOR MYSELF VERY COMPLICATED.

    Hi, I would like to assist you on this matter, however I would need some information from you first.  I see that you are running windows 8. What is the make and model number of the computer that you are using?  The windows 8 that you are using, is it a 32 bit or a 64 bit operating system?  Please write back and I will be happy to do research on this issue.
    Thank you
    Waterboy71
    Click the “Kudos Thumbs Up" at the bottom of this post to say “Thanks” for helping!
    Please click “Accept as Solution ” if you feel my post solved your issue, it will help others find the solution.
    W a t e r b o y 71
    I work on behalf of HP

  • Audio and Video issue with Windows 8.1 upgrade on Ideapad n585

    I upgraded my Ideapad N585 to Windows 8.1 the other day, took forever, but it made it through.  Unfortunately, I now get boot erors for the Dolby software, and the AMD Vision/Catalysyt Control Center.  Neither of these programs are able to start, from startup or even manually.  They just won't run.  Sound seems to come out fine still, but I do have video issues. 
    First off, my computer doesn't seem to recognize a HDtv as a monitor through the HDMI port.  I still get an image, but it's set to current screen resolution instead of 1080i.  I tried using the detect button to force it to look for a second monitor (my TV), but it showed nothing connected, though at the time I was using two screens.  Now my monitor's screen resolution seems to be a little higher than my TV's, but it doesn't fit the screen properly, and will sometimes put a black border around the desktop, not using the full screen.  I have also noticed, that when plugged into the tv, if a background program like a screen saver starts (and I am one of the few people who still use them, I like BOINC, sue me), it will reset the screen resolution to what it requires.  When the program exits, the screen resolution stays, and that becomes the new max screen resolution until I restart the computer.  So far, it only does this through the tv, if I run the laptop monitor alone, it doesn't happen.
    I did try updating the software with what's available through the support site, but nothing happened.  I even went as far as to use the Windows 9x~XP standbys of completely uninstalling, manually removing everything from the system registry I could find relating to these two programs, and then finally reinstalling the software.  Giving the audio and video a complete clean slate to work from, and got no positive results.  I restart the computer, Dolby and Catalyst won't boot, and blind to HDtv.  Problems as described above still apply.
    Anybody else have this issue?  Anybody got a fix?

    have you found a solution to this?
    My computer updated to 8.1 without my wanting it to, I have the same problems as you. I installed the video driver because the brightness was locked on what I had it. (the bar would move but did not change)
    I searched for brightness and n585 and I was able to find a driver, now brightness works but HDMI still does not. When I plug in the TV both screens go black with all 4 options in the "project" screen.
    *edit*
    this worked for me i stumbled across this
    I unplugged the power cable with the hdmi cable plugged in. Hit (windows key+p) scrolled to duplicate and it worked.I plugged in the power cord back in and it still worked. 

  • Why can't Adobe Premiere Pro CC 2014 Time remap Audio and Video together?

    In case you didn't notice, my question is WHY.  I don't know why Premiere Pro can't do this.  From what I understand at the moment, the only way to time-remap audio in any way shape or form using Adobe software is through Adobe After Effects, which my computer has absolutely no chance of running ever.  I know how to do regular stretching of audio in both Audition and Premiere Pro, but apparently I can't time-remap audio using either of these programs.
    So why can't Adobe Premiere Pro time remap audio along with the video?  What's the reason that it can't?  It's a massive disappointment and would be very impressive to see accomplished in the future.  If it's possible to time remap audio and video together in After Effects, that's great and all, except for the fact that I can't use that program.  Why can't it be done in Premiere Pro and will it ever be possible in Premiere Pro?
    Also, will time remapping audio become possible in Audition someday?

    That sounds like a great idea.  File a Feature Request:
    Adobe - Feature Request/Bug Report Form

  • Audio and video out of sync after converting to mp4

    I've tried 3 converters (ImToo, Xilisoft, and Videora) and for 2 videos I really want on my ipod, the audio and video are offset. Infact, on Xilisoft, one wouldn't even convert (to anything ------as both are WMV and I thought that might be a problem--but I found I had another WMV that had the audio matching the video fine). For the other vid., I tried on Xilisoft making it an AVI first, but that AVI also had messed up audio/video
    This is a really broad question, but what can I do and what programs can I try to get the videos to convert properly??
    (I've tried uploading the wmvs to itunes to have itunes "convery for ipod", but they wouldn't even upload to itunes)
    30gb video ipod   Windows XP  

    I have also had similar problems. Unfortunatly i have yet to discover a program that works perfectly. Just keep searching is really all i have to say. However if you do find it, could u please post it

  • Audio and Video out of sync in PPCS6.0.3

    I imported a video clip into Adobe Premiere Pro CS 6.0.3.   I noticed that the video and audio are out of sync.   I played the video file through Windows Media Player and the audio/video are in sync. 
    However at 8min42sec, I noticed that the video becomes garbled but the audio track is fine.   The entire video clip is about 10min24sec.
    I would like to trim the video file at the 8min42sec.   However everytime, I import it into Adobe Premiere, the audio and video are out of sync.   I wonder if Premiere is trying to stretch the video track to compensate.    Is there a way to import the video clip without having Adobe Premiere manipulating it.   Any suggestions are appreciated.  Thanks  

    1st... More information needed for someone to help... please click below and provide the requested information
    -Information FAQ http://forums.adobe.com/message/4200840
    2nd... What are you editing, and does your sequence match your video?
    For CS5 and later, the easy way to insure that your video and your project match
    See 2nd post for picture of NEW ITEM process http://forums.adobe.com/message/3776153
    -and a FAQ on sequence setting http://forums.adobe.com/message/3804341
    When your project sequence is correct, you will not see a red line over your timeline at first import, before you do anything to the video
    Read Bill Hunt on a file type as WRAPPER http://forums.adobe.com/thread/440037
    What is a CODEC... a Primer http://forums.adobe.com/thread/546811
    What CODEC is INSIDE that file? http://forums.adobe.com/thread/440037
    Report back with the codec details of your file, use the programs below... A screen shot works well to SHOW people what you are doing
    http://forums.adobe.com/thread/592070?tstart=30
    For PC http://mediainfo.sourceforge.net/en or http://www.headbands.com/gspot/
    For Mac http://mediainspector.massanti.com/

  • Audio and Video out of sync during editing. PLEASE HELP

    I am using a MacBook Pro. Specs are:
    - OS X version 10.9.2
    - 2.5GHz Intel Core i5 Processor
    - 4GB 1600MHz DDR3 RAM
    When I import a video into AfterEffects CC, the audio and video are out of sync. The audio and video files are the right size, length etc. but are way out of sync. By the end of a 2 minute video, it can be out by up to 5-6 seconds. This applies to videos imported from any device. iPhone, USB and even videos I've recorded directly from my computer. Most files I try and import are MP4 files, but I've found the same issues with all other video files. I've even tried importing them separetely as an audio file and then as a video file. Nothing seems to work. I am also experienceing the same issue with Premiere CC.
    Please help. I am needing these programs to work for assessment items.
    - Andrew

    Without knowing the specs of your videos it is hard to say. I'm also running a Mac and am having no such issues.
    My first thought is that you have something from a 3rd party installed that is causing conflicts. If all else fails try transcoding your mp4 files to a frame based codec using the Adobe Media Encoder. Pick one of the Apple production codecs or Jpeg compressed QuickTime.
    Are you running a ram preview? Did you render your Premiere timeline? Are you new to AE?

  • Audio and video out of sync after capture from Canon

    Help for a newbie please?  I have a Canon XHA1S and have a problem after capturing HD video.  After capturing a 40 minute clip, the  audio and video are out of sync.  Seems like there is about a 3 second difference.  The entire clip is like that in the source window; I made a couple of quick edits and have the same problem in the program window.  Tried exiting and re-opening PP, but that didn't help.  I'm running PP in CS6 on an iMac 3.4 GHz i7 with 8G of ram.  Thanks!

    I have NOT used it, but many say to try this for HDV capture http://strony.aster.pl/paviko/hdvsplit.htm

  • Audio and video not in sync. went back to previously finished projects and they too are not in sync. What could be the problem?

    Audio and video not in sync. Went back to previously edited projects and they too are now not in sync. What could be the problem?

    Um ... some useful data?
    OS/CPU/RAM/GPU/vRAM ... version of PrPro ... and other programs or plugi-ins/3rd-party apps involved ... footage type/codec/wrapper ... such things would be very useful.
    Neil

  • Audio and Video Not Synchronizing in the Same Clip.

    Ok, So I have had Adobe Premier Pro for a while now an I love it. I just have one not so insignificant problem with it. I was in the middle of making a video (with one particularly long clip in it) and I noticed something that began to happen in the beginning of the clip and went up until about thirty seconds. The audio and video gradually became further and further apart until they were about three seconds off. I was only using one clip so there should be no way I screwed up the placement of the files in the timeline. Viewing the clip in quicktime player does not give me that problem, so it's either a problem with Premiere Pro, or something else that I am unaware of. It has became so bad that I even downloaded iMovie so I could at least get this movie edited. I am pretty new to Premier Pro so any advice is much appreciated. Thanks!

    Exactly what is INSIDE the video you are editing?
    Codec & Format information, with 2 links inside for you to read http://forums.adobe.com/thread/1270588
    Report back with the codec details of your file, use the programs below... A screen shot works well to SHOW people what you are doing
    http://forums.adobe.com/thread/592070?tstart=30 for screen shot instructions
    Free programs to get file information for PC/Mac http://mediaarea.net/en/MediaInfo/Download

  • Why do my audio and video start in sync, then quickly go out of sync?

    I've just installed Windows 8 and also purchased Premiere Elements 12.
    I've also got Windows movie maker.
    When I play my clips in Premiere Elements, they audio and video start of synced, but quickly go out. This doesn't happen with Windows Movie Maker and I had trialed some NCH video editing software also and didn't have that problem.
    can someone tell me what I need to do to get this working right?

    MASMAS
    The first thing that we need to know are the properties of what you are putting on the Timeline. What works in another software does not necessarily work in Premiere Elements. Each program has its own supported formats.
    a. What is the file extension for this file? .MOV or .MP4?
    b. Does the iPad describe it as 1080p or 720p?
    c. If you open Premiere Elements 12 and go to Edit Menu/Project Settings/General, what do you see for Editing Mode, Timebase, Frame Size, and Pixel Aspect Ratio, even if those field appear to be grayed out.
    Two immediate troubleshooting avenues are going to be in the direction of...
    a. Project settings not set up to match the properties of the source from the iPad. Then we would start a new project and set the project setting manually before importing your video. Details for manually setting the project preset are in the following.
    ATR Premiere Elements Troubleshooting: PE11: Accuracy of Automatic Project Preset (New Project Dialog) Setting
    b. The iPad video being recorded with a variable frame rate instead of a constant one...the remedy then would probably be to take your video in a program like HandBrake to change the variable to a constant frame rate. And after that, import the corrected video into the Premiere Elements project which has the correct project preset (preferably set manual to assure the correct result).
    Please see what you can put together in the way of video details, and we will sort this out.
    Thanks.
    ATR

  • My audio and video are in sync, but get out of sync as it goes along?

    I recorded an audio file on Garageband and I am trying to line it up with a iMovie video. At first, the audio and video sync up perfectly, but as the video goes along, a delay starts to appear and grows bigger and bigger. Anybody has a solution?

    MASMAS
    The first thing that we need to know are the properties of what you are putting on the Timeline. What works in another software does not necessarily work in Premiere Elements. Each program has its own supported formats.
    a. What is the file extension for this file? .MOV or .MP4?
    b. Does the iPad describe it as 1080p or 720p?
    c. If you open Premiere Elements 12 and go to Edit Menu/Project Settings/General, what do you see for Editing Mode, Timebase, Frame Size, and Pixel Aspect Ratio, even if those field appear to be grayed out.
    Two immediate troubleshooting avenues are going to be in the direction of...
    a. Project settings not set up to match the properties of the source from the iPad. Then we would start a new project and set the project setting manually before importing your video. Details for manually setting the project preset are in the following.
    ATR Premiere Elements Troubleshooting: PE11: Accuracy of Automatic Project Preset (New Project Dialog) Setting
    b. The iPad video being recorded with a variable frame rate instead of a constant one...the remedy then would probably be to take your video in a program like HandBrake to change the variable to a constant frame rate. And after that, import the corrected video into the Premiere Elements project which has the correct project preset (preferably set manual to assure the correct result).
    Please see what you can put together in the way of video details, and we will sort this out.
    Thanks.
    ATR

  • Home entertainment - Audio and video not in s

    I call a Philips LCD 37PFL7403D/0 with [size="">HD Natural Motion technology my own. When I turn on HD Natural Motion feature, audio and video are not in sync anymore. The Philips FAQ recommands to set the audio sync delay to 200 milliseconds (200ms).
    I use a Sound Blaster X-Fi Xtreme Audio and I have not found any possibility to adjust the audio sync delay.

    Um ... some useful data?
    OS/CPU/RAM/GPU/vRAM ... version of PrPro ... and other programs or plugi-ins/3rd-party apps involved ... footage type/codec/wrapper ... such things would be very useful.
    Neil

  • Photo Booth Audio and Video are out of sync?

    Hi. So there is this glitch that when I take videos on Photo Booth the audio and video are out of sync. This started after I upgraded to Mountain Lion, and since I use Photo Booth a lot, I really do care. Is there anyway that I can fix this until Apple fixes this bug? Thanks.
    Extra Info: The first video I took was not out of sync, but after that they got more and more out of sync.

    I've read all the forums. It's a big problem for most Photobooth users, Apple acknowledges it, but does not yet have a fix.
    The best solution I have come up with is to dump Photobooth (I know - it was a great program, wasn't it? But so was Hypercard) and use Quicktime to make videos. You'll have to spend a little more work savings or exporting, but at least Quicktime is free.
    Just open Quicktime Player and under the File menu you'll see "Record New Movie."
    The downward slide continues...

Maybe you are looking for

  • Media player and rosetta...

    I just downloaded Windows Media Player for Macs. I also had to install an expander in order to have it function. Unfortunately, when I try to open Windows Media Player installer, it says I now need to install Rosetta... I thought I already had it on

  • Printer Features Available using Airport Express

    I just purchased an AirPort Express to use with my HP PSC 1350 All-in-one printer. The question I have is will the scan function work when the printer is connected to the AX? In other words, can I scan a document and have it saved on my MacBook wirel

  • How to Use Open Dialog Box, & Save Dialog Box

    Hi Frens, Can You tell me how can i use open dialog box, and save dialog box using Flex. Because there is no such components are given here. Also How can i Do when I click on some button, or some event Please tell me abt this, Thks in advance frens A

  • Can't get Contacts "except my country" button to work

    In Contacts, when printing labels, I can't get the second button related to "country" to work. It is called "except my country", even after selecting the "country" button. This problem occurs when trying to print a page of Avery 8160 labels. I get th

  • Emails by utl_tcp not received

    Hi, I've successfully ran the following code to send email from Oracel 10g R1 db. However, no email receieved in the recepient side: MYUSER @mydb> ed Wrote file afiedt.buf   1  declare   2    msg_from    varchar2(50) := 'my DB';   3    msg_to      va