一、什么是JAVE
JAVE(Java Audio Video Encoder),是一个包涵ffmpeg项目库。开发这可以运用它去实现音频(Audio)与视频(Video)文件的转码。例如你要把AVI格式文件转为MPEG文件、WAV格式文件转为MP3格式文件,同时你还能调整文件大小与比例。JAVE兼容和支持很多格式之间的转码……
二、典型案例分析
近期在做微信开发时,需要获取用户发给公众服务号的语音留言。而从微信服务端下载来的语音格式却是amr的格式,同样的你手机录音、Android语音等也都是生成amr格式文件。但当你想在web页面去播放此文件时,就困难了。因为无论是当前HTML5的<audio>标签,还是众多的播放插件都不支持amr格式文件的播放。所以,你不得不先把它转码为常见的MP3等类型文件。
三、所需环境与配置
JAVE requires a J2SE environment 1.4 or later and a Windows or Linux OS on a i386 / 32 bit hardware architecture. JAVE can also be easily ported to other OS and hardware configurations, see the JAVE manual for details。 嗯,你应该看得懂~:D
噢~差点忘了,你在使用时当然还必须引入它的jar包,请猛戳这里点击下载:jave-1.0.2.zip
四、具体用法与文档说明:
1.JAVE中有个最重要的类Encoder,它暴露了很多的方法,总之你在使用JAVE时,你总是要创建Encoder的实例。
Encoder encoder = new Encoder();
让后转码时调用 encode()方法:
public void encode(java.io.File source,
java.io.File target,
it.sauronsoftware.jave.EncodingAttributes attributes)
throws java.lang.IllegalArgumentException,
it.sauronsoftware.jave.InputFormatException,
it.sauronsoftware.jave.EncoderException
第一个参数source:需要转码的源文件
第二个参数target:需转型成的目标文件
第三个参数attributes:是一个包含编码所需数据的参数
2.Encoding attributes
如上所述的encoder()方法,第三个参数是很重要的,所以,你得实例化出一个EncodingAttributes即EncodingAttributes attrs = new EncodingAttributes();
接下来看看attrs都包含了些什么方法:
public void setAudioAttributes(it.sauronsoftware.jave.AudioAttributes audioAttributes)
从方法名可以看出是在转码音频时需要用到的方法,可以说是添加音频转码时所需音频属性。
public void setVideoAttributes(it.sauronsoftware.jave.AudioAttributes videoAttributes)
从方法名可以看出是在转码视频时需要用到的方法,可以说是添加视频转码时所需视频属性。
public void setFormat(java.lang.String format)
这个则是设置转码格式的方法。
public void setOffset(java.lang.Float offset)
设置转码偏移位置的方法,例如你想在5秒后开始转码源文件则setOffset(5)。
public void setDuration(java.lang.Float duration)
设置转码持续时间的方法,例如你想持续30秒的转码则setDuration(30)。
3.Audio encoding attributes
同样的我们也需设置Audio的属***:AudioAttributes audio = new AudioAttributes();
看看它的方法:
public void setCodec(java.lang.String codec)//设置编码器
public void setBitRate(java.lang.Integer bitRate)//设置比特率
public void setSamplingRate(java.lang.Integer bitRate)//设置节录率
public void setChannels(java.lang.Integer channels)//设置声音频道
public void setVolume(java.lang.Integer volume)//设置音量
4.Video encoding attributes
public void setCodec(java.lang.String codec)//设置编码器
public void setTag(java.lang.String tag)//设置标签(通常用多媒体播放器所选择的视频解码)
public void setBitRate(java.lang.Integer bitRate)//设置比特率
public void setFrameRate(java.lang.Integer bitRate)//设置帧率
public void setSize(it.sauronsoftware.jave.VideoSize size)//设置大小
5.Monitoring the transcoding operation
你可以用listener监测转码操作。JAVE定义了一个