Advertisement
Guest User

Mondain

a guest
Aug 20th, 2010
365
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.45 KB | None | 0 0
  1.     class ConfigureListener extends MediaToolAdapter {
  2.  
  3.         @Override
  4.         public void onAddStream(IAddStreamEvent event) {
  5.             log.debug("ConfigureListener onAddStream");
  6.             int index = event.getStreamIndex();
  7.             IStreamCoder coder = event.getSource().getContainer().getStream(index).getStreamCoder();
  8.             if (coder.getCodecType() == ICodec.Type.CODEC_TYPE_AUDIO) {
  9.                 log.debug("Sample rate: {}", coder.getSampleRate());
  10.                 coder.setBitRate(96000);
  11.                 //coder.setBitRateTolerance(96000);
  12.                 //coder.setProperty("vol", 256);
  13.                 log.debug("Audio encoder configured");
  14.             } else if (coder.getCodecType() == ICodec.Type.CODEC_TYPE_VIDEO) {
  15.                 if (coder.getCodecID().equals(ICodec.ID.CODEC_ID_H264)) {
  16.                     log.debug("H.264 codec detected, attempting configure with preset file");
  17.                     try {
  18.                         InputStream in = StreamManager.class.getResourceAsStream("libx264-default.ffpreset");
  19.                         Properties props = new Properties();
  20.                         props.load(in);
  21.                         int retval = Configuration.configure(props, coder);
  22.                         if (retval < 0) {
  23.                            throw new RuntimeException("Could not configure coder from preset file");
  24.                         }
  25.                         coder.setProperty("nr", 0);
  26.                         coder.setProperty("mbd", 0);
  27.                     } catch (IOException e) {
  28.                         log.warn("Exception attempting to configure", e);
  29.                     }          
  30.                 } else if (coder.getCodecID().equals(ICodec.ID.CODEC_ID_THEORA)) {
  31.                     log.debug("Theora codec detected, attempting configure with presets");                 
  32.                     try {
  33.                         InputStream in = StreamManager.class.getResourceAsStream("libtheora-default.ffpreset");
  34.                         Properties props = new Properties();
  35.                         props.load(in);
  36.                         int retval = Configuration.configure(props, coder);
  37.                         if (retval < 0) {
  38.                            throw new RuntimeException("Could not configure coder from preset file");
  39.                         }
  40.                         coder.setProperty("qscale", 2);
  41.                         coder.setProperty("sharpness", 1);
  42.                         //coder.setProperty("deinterlace", true);
  43.                         coder.setProperty("mbd", 2);
  44.                     } catch (IOException e) {
  45.                         log.warn("Exception attempting to configure", e);
  46.                     }                  
  47.                 } else {
  48.                     // all other codecs
  49.                     coder.setNumPicturesInGroupOfPictures(250);
  50.                     coder.setFlag(IStreamCoder.Flags.FLAG_QSCALE, true);
  51.                 }          
  52.                 coder.setPixelType(Type.YUV420P);
  53.                 coder.setBitRate(1024000);
  54.                 coder.setBitRateTolerance(512000);
  55.                 log.debug("Video encoder configured");
  56.             }
  57.             super.onAddStream(event);
  58.             log.debug("ConfigureListener onAddStream - end");
  59.         }
  60.  
  61.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement