JAVE是用java包装ffmpeg的一个类库,可以自由的在各种音视频格式之间转换,它的jar包里就包含了ffmpeg的可执行文件,有linux和windows的,我为了在本机上调试,去ffmpeg的官网下了一个Mac OSX版本的。
官网地址:http://www.sauronsoftware.it/projects/jave/。养成去看官网的习惯很重要,英语差点的话可以先看中文的介绍,有个概念再去看官网的说明。
我是直接用源代码跑的,方便调试问题。下面是mp3转换为m4a格式的一个例子,更多的例子和请去官网查看
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
| /**
* 转化音频格式
* @param s
* @param t
* @throws IllegalArgumentException
* @throws InputFormatException
* @throws EncoderException
*/
private void convertAudio(String s, String t){
File source = new File(s);
File target = new File(t);
AudioAttributes audio = new AudioAttributes();
audio.setCodec("libmp3lame");
audio.setBitRate(new Integer(128000));
audio.setChannels(new Integer(2));
audio.setSamplingRate(new Integer(44100));
EncodingAttributes attrs = new EncodingAttributes();
attrs.setFormat("mp4");
attrs.setAudioAttributes(audio);
Encoder encoder = new Encoder();
try {
encoder.encode(source, target, attrs);
} catch (IllegalArgumentException e) {
log.error(e.getMessage(), e);
} catch (InputFormatException e) {
log.error(e.getMessage(), e);
} catch (EncoderException e) {
log.error(e.getMessage(), e);
}
}
|
转换的时候老是报错,抛出EncoderException异常,我查了一下源码,注释掉Encoder.java的864行
throw new EncoderException(line);