使用jave转换音视频格式

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);