2

I'm new of xuggler. I'm willing to convert .mov, .avi, .wmv to mp4 using xuggler. .mov and .wmv convert to flv first and then convert to mp4. It worked. but I want to directly convert to mp4. But avi neither converts to flv nor mp4. I use the simple code.

IMediaReader reader = ToolFactory.makeReader("1.mov");
            reader.addListener(ToolFactory.makeWriter("wild.flv", reader));
            while(reader.readPacket() == null)
                ;

Please help me to figure it out. Thanks

Koen Peters
  • 12,798
  • 6
  • 36
  • 59
user2310338
  • 21
  • 1
  • 3

2 Answers2

1

You can try this to input and output in required format.

   IMediaReader mediaReader = ToolFactory.makeReader(inputFilename);

   IMediaWriter mediaWriter = ToolFactory.makeWriter(outputFilename, mediaReader); 

    mediaReader.addListener(mediaWriter); 

    IMediaViewer mediaViewer = ToolFactory.makeViewer(true); 

     mediaReader.addListener(mediaViewer);
Deepanshu J bedi
  • 1,530
  • 1
  • 11
  • 23
  • I've tried already. Statistic are index 0, id 1, type : CODEC_TYPE_VIDEO, name : H.264/AVC/MPEG-4 AVC/MPEG-4 part 10, direction : INBOUND, time : 23:30:00.041 - 41 and program isn't being existed. That's all I got the information. Thanks – user2310338 Aug 01 '14 at 09:59
0

I'll do something like this:

 public void convertToMP3(File input, File output, int kbps) { //modify on your convenience
        // create a media reader
        IMediaReader mediaReader = ToolFactory.makeReader(input.getPath());

        // create a media writer
        IMediaWriter mediaWriter = ToolFactory.makeWriter(output.getPath(), mediaReader);

        // add a writer to the reader, to create the output file
        mediaReader.addListener(mediaWriter);

        // add a IMediaListner to the writer to change bit rate
        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(kbps);
                streamCoder.setBitRateTolerance(0);
                }
            });

        // read and decode packets from the source file and
        // and dispatch decoded audio and video to the writer
        while (mediaReader.readPacket() == null);
    }

input is the File (aac/wav/wma) you want to convert and output is a new .mp3 file (Xuggler figure out the conversion by the extension).

You can increase the quality increasing kbps (i.e. for 320 kbps you need to pass in 320000).

Hope that helps :-)

FYI: for Java projects you'll need to import the following if you haven't already done so:

import com.xuggle.mediatool.MediaListenerAdapter;
import com.xuggle.mediatool.event.IAddStreamEvent;
import com.xuggle.xuggler.IStreamCoder;
mfs
  • 3,984
  • 6
  • 32
  • 51
  • I've tired out what you gave me but it didn't work for converting to mp4. Thank you for helping me. Would you mind helping me again :) – user2310338 Aug 01 '14 at 10:11