package com.pronity.audio.resample; import com.xuggle.mediatool.MediaToolAdapter; import com.xuggle.mediatool.event.AudioSamplesEvent; import com.xuggle.mediatool.event.IAddStreamEvent; import com.xuggle.mediatool.event.IAudioSamplesEvent; import com.xuggle.mediatool.event.IVideoPictureEvent; import com.xuggle.xuggler.IAudioResampler; import com.xuggle.xuggler.IAudioSamples; import com.xuggle.xuggler.ICodec; import com.xuggle.xuggler.IStreamCoder; public class ConfigureListener extends MediaToolAdapter { private IAudioResampler resampler = null; @Override public void onAddStream(IAddStreamEvent event) { int streamIndex = event.getStreamIndex(); IStreamCoder streamCoder = event.getSource().getContainer().getStream( streamIndex).getStreamCoder(); if (streamCoder.getCodecType() == ICodec.Type.CODEC_TYPE_AUDIO) { streamCoder.setSampleRate(44100); streamCoder.setCodec(ICodec.ID.CODEC_ID_WMAV2); } super.onAddStream(event); } @Override public void onAudioSamples(IAudioSamplesEvent event) { IAudioSamples samples = event.getAudioSamples(); if (resampler == null) { resampler = IAudioResampler.make(2, samples.getChannels(), 44100, samples .getSampleRate()); } if (resampler != null && event.getAudioSamples().getNumSamples() > 0) { IAudioSamples out = IAudioSamples.make(samples.getNumSamples(), samples .getChannels()); resampler.resample(out, samples, samples.getNumSamples()); AudioSamplesEvent asc = new AudioSamplesEvent(event.getSource(), out, event.getStreamIndex()); super.onAudioSamples(asc); out.delete(); } } }