跳转到主内容
新派编程网 - 新潮编程理念,全新技术课堂!

使用Java实现视频与音频转码

目录需求Jave介绍Jave中几个重要的类

1.Encoder类

2.EncodingAttributes类

3.AudioAttributes类:音频相关属性

4.VideoAttributes 类:视频相关属性

5.MultimediaInfo类:媒体文件信息

6.EncoderProgressListener接口:监测转码操作实例总结需求把ape,ios,dsf,dff,ape,flac等音频格式转换为mp3,wav音频格式,因为大部分音乐播放器和html的< audio>标签都支持mp3和wav格式。wav音乐格式是无损音乐,其他都是有损音乐格式或者无损音乐的压缩版。把其他视频格式转换成HTML5能播放的视频格式,也可获取上传视频的时长,网页视频播放只支持一下三种:格式解释Ogg带有 Theora 视频编码和 Vorbis 音频编码的 Ogg 文件MPEG4带有 H.264 视频编码和 AAC 音频编码的 MPEG 4 文件WebM带有 VP8 视频编码和 Vorbis 音频编码的 WebM 文件Jave介绍JAVE(Java Audio Video Encoder),是一个包涵ffmpeg项目库。开发这可以运用它去实现音频(Audio)与视频(Video)文件的转码。官方文档:http://www.sauronsoftware.it/projects/jave/manual.phpJave中几个重要的类

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音乐格式 /*** 转化音频格式* @param oldFormatPath : 原音乐路径* @param newFormatPath : 目标音乐路径* @return*/public static boolean transforMusicFormat(String oldFormatPath, String newFormatPath) {File source = new File(oldFormatPath);File target = new File(newFormatPath);

// 音频转换格式类Encoder encoder = new Encoder();

// 设置音频属性AudioAttributes audio = new AudioAttributes();audio.setCodec(null);// 设置转码属性EncodingAttributes attrs = new EncodingAttributes();attrs.setFormat("wav");attrs.setAudioAttributes(audio);

try {encoder.encode(source, target, attrs);System.out.println("传唤已完成...");deleteFile(oldFormatPath);return true;} catch (IllegalArgumentException e) {e.printStackTrace();} catch (InputFormatException e) {e.printStackTrace();} catch (EncoderException e) {e.printStackTrace();}return false;}

/*** 删除原音频文件* @param filePath : 原文件路径* @return*/public static boolean deleteFile(String filePath){File file = new File(filePath);// 路径为文件且不为空则进行删除if (file.isFile() && file.exists()) {// 文件删除file.delete();return true;}return false;}

/*** 判断格式是否需要转换* @param musicName* @return*/public static boolean checkMusicFormat(String musicName){if (musicName== null || "".equals(musicName)){return false;}String suffix = musicName.substring(musicName.lastIndexOf(".")+1);if ("mp3".equals(suffix) || "wav".equals(suffix)){return false;}return true;}总结转换音频格式步骤:创建转换格式类Encoder设置音频属性,通过AudioAttributes类完成设置转码属性,通过EncodingAttributes类完成调用Encoder类的encode方法转码视频格式转换类似。到此这篇关于使用Java实现视频与音频转码的文章就介绍到这了,更多相关Java视频与音频转码内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!您可能感兴趣的文章:JAVA代码调用ffmpeg程序进行视频转码和推流方式Java实现音频转码(WAV、MP3、AMR互转)java实现视频转码工具类java使用ffmpeg实现上传视频的转码提取视频的截图等功能(代码操作)Java使用ffmpeg和mencoder实现视频转码java实现图像转码为字符画的方法java字符转码的三种方法总结及实例

相关文章