package com.haiyu.xiong;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Comparator;
/**
* 自己写的一个文件合并工具
* 用来将缓存的视频文件合并成一个完整的文件。
* 方便后期的播放或者视频处理
* @author xionghy
*/
public class MergerVideoFile {
public static void main(String[] args) {
MergerVideoFile merger = new MergerVideoFile();
if(args.length<=0) {
merger.printfHelp();
}else {
for (String str : args) {
merger.startMerger(str);
}
}
//new MergerVideoFile().startMerger();
}
private void startMerger(String videoDir) {
File videos = new File(videoDir);
if(videos.isFile()) {
System.out.println("设置的参数是文件,不能合并,参数需要设置为缓存目录的路径");
return;
}
File[] tmps = videos.listFiles();
ArrayList<File> list = new ArrayList();
for (File file : tmps) {
try {
Integer.valueOf(file.getName());
list.add(file);
}catch(NumberFormatException e) {
System.out.println("跳过目录文件");
}
}
list.sort(new Comparator() {
@Override
public int compare(Object f1, Object f2) {
int i = Integer.valueOf(((File)f1).getName());
int j = Integer.valueOf(((File)f2).getName());
if(i>j)return 1;
if(i==j)return 0;
return -1;
}
});
File mvFile = new File(videos.getParentFile(),videos.getName()+".mp4");
try {
FileOutputStream outputStream = new FileOutputStream(mvFile);
for (File file : list) {
FileInputStream inputStream = new FileInputStream(file);
byte[] bf = new byte[(int) file.length()];
inputStream.read(bf);
outputStream.write(bf);
inputStream.close();
}
outputStream.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
private void printfHelp() {
System.out.println("使用方法:");
System.out.println("在windows 的命令行输入 java -jar MySocketTest.jar fileDir");
System.out.println("说明:");
System.out.println("1:需要安装了java 环境");
System.out.println("2:fileDir 是缓存文件保存的路径,为文件夹");
System.out.println("3:缓存文件夹里面的文件必须全部是缓存文件");
}
}
评论2