Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class ConfigureListener extends MediaToolAdapter {
- @Override
- public void onAddStream(IAddStreamEvent event) {
- log.debug("ConfigureListener onAddStream");
- int index = event.getStreamIndex();
- IStreamCoder coder = event.getSource().getContainer().getStream(index).getStreamCoder();
- if (coder.getCodecType() == ICodec.Type.CODEC_TYPE_AUDIO) {
- log.debug("Sample rate: {}", coder.getSampleRate());
- coder.setBitRate(96000);
- //coder.setBitRateTolerance(96000);
- //coder.setProperty("vol", 256);
- log.debug("Audio encoder configured");
- } else if (coder.getCodecType() == ICodec.Type.CODEC_TYPE_VIDEO) {
- if (coder.getCodecID().equals(ICodec.ID.CODEC_ID_H264)) {
- log.debug("H.264 codec detected, attempting configure with preset file");
- try {
- InputStream in = StreamManager.class.getResourceAsStream("libx264-default.ffpreset");
- Properties props = new Properties();
- props.load(in);
- int retval = Configuration.configure(props, coder);
- if (retval < 0) {
- throw new RuntimeException("Could not configure coder from preset file");
- }
- coder.setProperty("nr", 0);
- coder.setProperty("mbd", 0);
- } catch (IOException e) {
- log.warn("Exception attempting to configure", e);
- }
- } else if (coder.getCodecID().equals(ICodec.ID.CODEC_ID_THEORA)) {
- log.debug("Theora codec detected, attempting configure with presets");
- try {
- InputStream in = StreamManager.class.getResourceAsStream("libtheora-default.ffpreset");
- Properties props = new Properties();
- props.load(in);
- int retval = Configuration.configure(props, coder);
- if (retval < 0) {
- throw new RuntimeException("Could not configure coder from preset file");
- }
- coder.setProperty("qscale", 2);
- coder.setProperty("sharpness", 1);
- //coder.setProperty("deinterlace", true);
- coder.setProperty("mbd", 2);
- } catch (IOException e) {
- log.warn("Exception attempting to configure", e);
- }
- } else {
- // all other codecs
- coder.setNumPicturesInGroupOfPictures(250);
- coder.setFlag(IStreamCoder.Flags.FLAG_QSCALE, true);
- }
- coder.setPixelType(Type.YUV420P);
- coder.setBitRate(1024000);
- coder.setBitRateTolerance(512000);
- log.debug("Video encoder configured");
- }
- super.onAddStream(event);
- log.debug("ConfigureListener onAddStream - end");
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement