Advertisement
Guest User

Untitled

a guest
Dec 17th, 2012
278
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /*
  2.  * Jitsi, the OpenSource Java VoIP and Instant Messaging client.
  3.  *
  4.  * Distributable under LGPL license.
  5.  * See terms of license at gnu.org.
  6.  */
  7. package org.jitsi.impl.neomedia.device;
  8.  
  9. import java.io.File;
  10. import java.net.MalformedURLException;
  11. import java.util.Vector;
  12. import java.util.logging.Level;
  13.  
  14. import javax.media.*;
  15. import javax.media.control.*;
  16. import javax.media.format.*;
  17. import javax.media.protocol.ContentDescriptor;
  18. import javax.media.protocol.DataSource;
  19. import javax.media.protocol.FileTypeDescriptor;
  20.  
  21. import org.jitsi.impl.neomedia.audiolevel.*;
  22. import org.jitsi.service.neomedia.event.*;
  23. import org.jitsi.util.*;
  24.  
  25. /**
  26.  * Extends <tt>AudioMediaDeviceSession</tt> to add file-recording functionality.
  27.  */
  28. public class FileMediaDeviceSession extends AudioMediaDeviceSession {
  29.     /**
  30.      * The <tt>Logger</tt> used by the <tt>AudioMediaDeviceSession</tt> class
  31.      * and its instances for logging output.
  32.      */
  33.     private static final Logger logger = Logger
  34.             .getLogger(FileMediaDeviceSession.class);
  35.  
  36.     /**
  37.      * Initializes a new <tt>MediaDeviceSession</tt> instance which is to
  38.      * represent the use of a specific <tt>MediaDevice</tt> by a
  39.      * <tt>MediaStream</tt>.
  40.      *
  41.      * @param device
  42.      *            the <tt>MediaDevice</tt> the use of which by a
  43.      *            <tt>MediaStream</tt> is to be represented by the new instance
  44.      */
  45.     protected FileMediaDeviceSession(AbstractMediaDevice device) {
  46.         super(device);
  47.     }
  48.  
  49.     DataSink sink;
  50.    
  51.     @Override
  52.     protected void playerControllerUpdate(ControllerEvent event) {
  53.         if (event instanceof ConfigureCompleteEvent) {
  54.             Processor player = (Processor) event.getSourceController();
  55.  
  56.             if (player != null) {
  57. //               playerConfigureComplete(player);
  58.  
  59.                 // * To use the processor as a Player we must set its
  60.                 // * ContentDescriptor to null.
  61.  
  62.                 try {
  63. //                  player.setContentDescriptor(null);
  64.                     player.setContentDescriptor( new ContentDescriptor(FileTypeDescriptor.WAVE));
  65.                 } catch (NotConfiguredError nce) {
  66.                     logger.error("Failed to set ContentDescriptor to Player.",
  67.                             nce);
  68.                     return;
  69.                 }
  70.                 player.realize();
  71.             }
  72.         } else if (event instanceof RealizeCompleteEvent) {
  73.             Processor player = (Processor) event.getSourceController();
  74.  
  75.             if (player != null) {
  76.                 playerRealizeComplete(player);
  77.                
  78.                 MediaLocator dest = null;
  79.                 try {
  80.                     dest = new MediaLocator(new File("recording.wav").toURI().toURL());
  81.                 } catch (MalformedURLException e1) {
  82.                     e1.printStackTrace();
  83.                 }
  84.                
  85.                 System.out.println("Trying to record.");
  86.                
  87.                 try {
  88.                     sink = Manager.createDataSink(player.getDataOutput(), dest);
  89.                     sink.open();
  90.                     sink.start();
  91.                 } catch (Exception e) {
  92.                     e.printStackTrace();
  93.                 }
  94.             }
  95.         }
  96.     }
  97.    
  98.     @Override
  99.     protected void disposePlayer(Player player){
  100.         super.disposePlayer(player);
  101.         System.out.println("disposePlayer");
  102.         sink.close();
  103.     }
  104. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement