Java 降低mp3文件的比特率
通过下面的方法,我能够使用xuggler lib降低MP3的比特率Java 降低mp3文件的比特率,java,xuggler,xuggle,Java,Xuggler,Xuggle,通过下面的方法,我能够使用xuggler lib降低MP3的比特率 public void reduce_file(File input, final File output, final int kbps, int index) { //modify on your convenience // create a media reader try { IMediaReader mediaReader = ToolFactory.mak
public void reduce_file(File input, final File output, final int kbps, int index) { //modify on your convenience
// create a media reader
try {
IMediaReader mediaReader = ToolFactory.makeReader(input.getPath());
System.out.println("around");
// 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 IMediaListener() {
@Override
public void onVideoPicture(IVideoPictureEvent ivpe) {
}
@Override
public void onAudioSamples(IAudioSamplesEvent iase) {
}
@Override
public void onOpen(IOpenEvent ioe) {
System.out.println("open");
}
@Override
public void onClose(ICloseEvent ice) {
System.out.println("closed");
}
@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);
//streamCoder.setSampleRate(22050);
streamCoder.setSampleFormat(IAudioSamples.Format.FMT_S32);
// streamCoder.setChannels(2);
}
@Override
public void onOpenCoder(IOpenCoderEvent ioce) {
}
@Override
public void onCloseCoder(ICloseCoderEvent icce) {
}
@Override
public void onReadPacket(IReadPacketEvent irpe) {
}
@Override
public void onWritePacket(IWritePacketEvent iwpe) {
}
@Override
public void onWriteHeader(IWriteHeaderEvent iwhe) {
iwhe.getSource().getContainer().writeHeader();
}
@Override
public void onFlush(IFlushEvent ife) {
}
@Override
public void onWriteTrailer(IWriteTrailerEvent iwte) {
}
});
while (mediaReader.readPacket() == null) ;
} catch (Exception ex) {
}
}
}
但是,对于某些媒体文件,我遇到以下错误:
ERROR org.ffmpeg - [mp3 @ 0x4e6e8e0] Header missing.
如何更正此错误,或者是否存在其他库。这将使我能够实现这一目标。提前谢谢