This is an old post, however, I hope my answer helps someone:
I used the same code as in the question, but I ran into a problem because some files could not be converted using this code.
In this answer, I open the file, and when it contains audio, I create the file. Otherwise, the file will not be created. Thus, this is the right way to extract the audio part of any file.
The same picture can be applied to the video. I think, I think this code will also give this idea.
package test.video; import com.xuggle.mediatool.IMediaReader; import com.xuggle.mediatool.IMediaWriter; import com.xuggle.mediatool.MediaToolAdapter; import com.xuggle.mediatool.ToolFactory; import com.xuggle.mediatool.event.IAudioSamplesEvent; import com.xuggle.mediatool.event.ICloseEvent; import com.xuggle.mediatool.event.IOpenCoderEvent; import com.xuggle.xuggler.IContainer; import com.xuggle.xuggler.IStreamCoder; public class separateAudioVideo { public static void main(String[] args) throws Exception { String file = "pasban/22.mp4"; String to = "pasban/22.mp3"; convert(file, to); } public static void convert(String from, final String to) { IMediaReader mediaReader = ToolFactory.makeReader(from); final int mySampleRate = 44100; final int myChannels = 2; mediaReader.addListener(new MediaToolAdapter() { private IContainer container; private IMediaWriter mediaWriter; @Override public void onOpenCoder(IOpenCoderEvent event) { container = event.getSource().getContainer(); mediaWriter = null; } @Override public void onAudioSamples(IAudioSamplesEvent event) { if (container != null) { if (mediaWriter == null) { mediaWriter = ToolFactory.makeWriter(to); mediaWriter.addListener(new MediaListenerAdapter() { @Override public void onAddStream(IAddStreamEvent event) { IStreamCoder streamCoder = event.getSource().getContainer().getStream(event.getStreamIndex()).getStreamCoder(); streamCoder.setFlag(IStreamCoder.Flags.FLAG_QSCALE, false); streamCoder.setBitRate(128); streamCoder.setChannels(myChannels); streamCoder.setSampleRate(mySampleRate); streamCoder.setBitRateTolerance(0); } }); mediaWriter.addAudioStream(0, 0, myChannels, mySampleRate); } mediaWriter.encodeAudio(0, event.getAudioSamples());
Soley source share