Java实现视频,音频转码
需求:
- 把ape,ios,dsf,dff,ape,flac等音频格式转换为mp3,wav音频格式,因为大部分音乐播放器和html的< audio>标签都支持mp3和wav格式。
wav音乐格式是无损音乐,其他都是有损音乐格式或者无损音乐的压缩版。
Jave介绍
JAVE(Java Audio Video Encoder),是一个包涵ffmpeg项目库。开发这可以运用它去实现音频(Audio)与视频(Video)文件的转码。 官方文档:
Jave中几个重要的类
1.Encoder类
// 音频转换格式类 Encoder encoder = new Encoder();
转码函数:
// 转码函数 public void encode(File source, File target, EncodingAttributes attributes, EncoderProgressListener listener);
参数说明:
- source:需要转码的源文件
- target : 需转型成的目标文件
- attributes:包含编码所需数据的参数
- listener :可选参数,实现该监听器可调用该接口中的方法,下面有说明
2.EncodingAttributes类
// 设置转码属性 EncodingAttributes attrs = new EncodingAttributes();
方法列表:
// 设置转码音频,添加音频转码时所需音频属性 public void setAudioAttributes(AudioAttributes audioAttributes) // 设置转码视频,添加视频转码时所需音频属性 public void setVideoAttributes(VideoAttributes videoAttributes) //设置转码格式 public void setFormat(String format) //设置转码偏移位置,自定义转码开始时间 public void setOffset(Float offset) //设置转码持续时间,自定义转码持续时间 public void setDuration(Float duration)
3.AudioAttributes类:音频相关属性
// 设置音频属性 AudioAttributes audio = new AudioAttributes();
方法列表:
// 设置编码器 public void setCodec(String codec) // 设置音频比特率 public void setBitRate(Integer bitRate) // 设置音频节录率 public void setSamplingRate(Integer bitRate) // 设置声音频道 public void setChannels(Integer channels) // 设置音频音量 public void setVolume(Integer volume)
4.VideoAttributes 类:视频相关属性
// 设置视频属性 VideoAttributes video = new VideoAttributes();
方法列表:
// 设置编码器 public void setCodec(String codec) // 设置标签(通常用多媒体播放器所选择的视频解码) public void setTag(String tag) // 设置视频比特率 public void setBitRate(Integer bitRate) // 设置视频帧率 public void setFrameRate(Integer bitRate) // 设置视频大小 public void setSize(VideoSize size)
5.MultimediaInfo类:媒体文件信息
//创建媒体信息对象 File source = new File("D:/test.mp4"); MultimediaInfo info = encoder.getInfo(file);
方法列表:
// 获得文件格式 public String getFormat(); // 获得时间(ms) public long getDuration(); // 获得音频对象 public AudioInfo getAudio(); // 获得视频对象 public VideoInfo getVideo();
6.EncoderProgressListener接口:监测转码操作
public interface EncoderProgressListener { //源文件信息 void sourceInfo(MultimediaInfo var1); //增长千分率 void progress(int var1); //转码信息提示 void message(String var1); }
实例
介绍:把除mp3和wav外的音乐格式转换成wav音乐格式
总结
转换音频格式步骤:
- 创建转换格式类Encoder
- 设置音频属性,通过AudioAttributes类完成
- 设置转码属性,通过EncodingAttributes类完成
- 调用Encoder类的encode方法转码
视频格式转换类似。