概述
jave2 工具类的使用,使用信息的获取以及AVI转换为MP4
使用手册:http://www.sauronsoftware.it/projects/jave/manual.php
github地址: https://github.com/a-schild/jave2https://github.com/a-schild/jave2
maven仓库坐标:
<dependency>
<groupId>ws.schild</groupId>
<artifactId>jave-all-deps</artifactId>
<version>2.7.3</version>
</dependency>
package com.XXX;
import ws.schild.jave.*;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.nio.channels.FileChannel;
import java.text.DecimalFormat;
import java.util.HashMap;
import java.util.Map;
import static org.hibernate.validator.internal.util.Contracts.assertTrue;
/**
* @Description: 视频文件的工具类
*/
public class VideoUtils {
/**
* 测试功能
*/
public static void main(String[] args){
Map<String, Object> voideMsg = getVideoMsg("C:\Users\权\Desktop\test.avi");
System.out.println(voideMsg);
videoConvertMP4("C:\Users\权\Desktop\test.avi", "C:\Users\权\Desktop\testMP4.mp4");
Map<String, Object> voideMsg2 = getVideoMsg("C:\Users\权\Desktop\testMP4.mp4");
System.out.println(voideMsg2);
}
/**
* @Description: 将视频转换为MP4格式 未开发完成
*
* @param path 要转换的文件路径
* @param targetPath 要保存的文件路径 ,如: C:Users权DesktoptestMP4.mp4
* @return 返回值 转化后的视频的路径
*/
public static void videoConvertMP4(String path, String targetPath) {
ConvertProgressListener listener = new ConvertProgressListener();
try {
File source = new File(path);
File target = new File(targetPath);
if (target.exists())
{
target.delete();
}
//设置音频属性
AudioAttributes audio = new AudioAttributes();
audio.setCodec("aac");
audio.setBitRate(128000);
audio.setSamplingRate(44100);
audio.setChannels(2);
// 设置视频属性
VideoAttributes video = new VideoAttributes();
video.setCodec("libx264");
video.setBitRate(4000000);
video.setFrameRate(15);
// 设置编码格式
EncodingAttributes attrs = new EncodingAttributes();
attrs.setFormat("mp4");
attrs.setAudioAttributes(audio);
attrs.setVideoAttributes(video);
// 进行编码,输出到本地
Encoder encoder = new Encoder();
encoder.encode(new MultimediaObject(source), target, attrs,listener);
assertTrue(target.exists(), "输出文件丢失");
} catch (Exception ex) {
ex.printStackTrace();
System.out.println("视频转换失败");
}
}
/**
* @Description: 获取视频文件的信息
*
* @param path 文件路径
* @return map 保存视频文件的信息,时间,宽,高,大小,格式,
*/
public static Map<String, Object> getVideoMsg(String path){
Map<String, Object> map = new HashMap<String, Object>();
File file = new File(path);
FileChannel fc= null;
String size = "";
if(file != null){
try {
MultimediaObject object = new MultimediaObject(file);
MultimediaInfo m = object.getInfo();
long ls = m.getDuration(); // 毫秒
map.put("millisecond", ls);
map.put("timestamp", ls);
// 格式化的时间 如 01:30:37
DecimalFormat format=new DecimalFormat("00");
String time = format.format(ls/3600000)+ ":" +format.format(ls/60000)+":"+format.format(((ls)/1000 - ls/60000 * 60));
map.put("time", time);
map.put("localtime", ls/60000+"分"+((ls)/1000 - ls/60000 * 60)+"秒"); // 本地时间:2分37秒
FileInputStream fis = new FileInputStream(file);
fc= fis.getChannel();
BigDecimal fileSize = new BigDecimal(fc.size());
size = fileSize.divide(new BigDecimal(1048576), 2, RoundingMode.HALF_UP) + "MB";
map.put("height", m.getVideo().getSize().getHeight());
map.put("width", m.getVideo().getSize().getWidth());
map.put("size", size);
map.put("format", m.getFormat());
}catch (Exception e) {
e.printStackTrace();
}finally {
if (null!=fc){
try {
fc.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
return map;
}
}
/**
* @Description: 视频转换时的监听器
*
*/
class ConvertProgressListener implements EncoderProgressListener {
public ConvertProgressListener() {
//code
}
public void message(String m) {
//code
}
public void progress(int p) {
//Find %100 progress
double progress = p / 1000.00;
System.out.println("转换进度:"+progress*100+"%");
}
public void sourceInfo(MultimediaInfo m) {
//code
}
}
最后
以上就是淡定哈密瓜为你收集整理的jave2 工具类的使用,使用信息的获取以及AVI转换为MP4的全部内容,希望文章能够帮你解决jave2 工具类的使用,使用信息的获取以及AVI转换为MP4所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复