java 视频合并_java 实现分段视频合并
原理很簡(jiǎn)單就是把多個(gè)視頻文件的內(nèi)容按順序?qū)懙揭粋€(gè)視頻文件中
代碼如下:
public static void CombineFile(String path,String tar) throws Exception {
try {
File dirFile = new File(path);
FileInputStream fis;
FileOutputStream fos = new FileOutputStream(tar);
byte buffer[] = new byte[1024 * 1024 * 2];//一次讀取2M數(shù)據(jù),將讀取到的數(shù)據(jù)保存到byte字節(jié)數(shù)組中
int len;
if(dirFile.isDirectory()) { //判斷file是否為目錄
String[] fileNames = dirFile.list();
Arrays.sort(fileNames, new StringComparator());//實(shí)現(xiàn)目錄自定義排序
for (int i = 0;i
System.out.println("D:\\tempfile\\"+fileNames[i]);
fis = new FileInputStream("D:\\tempfile\\"+fileNames[i]);
len = 0;
while ((len = fis.read(buffer)) != -1) {
fos.write(buffer, 0, len);//buffer從指定字節(jié)數(shù)組寫(xiě)入。buffer:數(shù)據(jù)中的起始偏移量,len:寫(xiě)入的字?jǐn)?shù)。
}
fis.close();
}
}
fos.flush();
fos.close();
}catch (IOException e){
e.printStackTrace();
} finally {
System.out.println("合并完成!");
}
}
在讀取要合并的文件時(shí),需要按拆分后的順序讀取文件,這是就需要文件自定義目錄排序
用Java列出某個(gè)文件目錄的文件列表是很容易實(shí)現(xiàn)的,只用調(diào)用File類中的list()方法即可。
代碼如下:
/此類實(shí)現(xiàn)Comparable接口
static class StringComparator implements Comparator {
@Override
public int compare(String s1, String s2) {
if (returnDouble(s1) < returnDouble(s2))
return -1;
else if (returnDouble(s1) > returnDouble(s2))
return 1;
else
return 0;
}
}
public static double returnDouble(String str){
StringBuffer sb = new StringBuffer();
for(int i=0;i
if(Character.isDigit(str.charAt(i)))
sb.append(str.charAt(i));
else if(str.charAt(i)=='.'&&i
sb.append(str.charAt(i));
else break;
}
if(sb.toString().isEmpty())
return 0;
else
return Double.parseDouble(sb.toString());
}
由類StringComparator實(shí)現(xiàn)Comparator接口就可以改變String類型的默認(rèn)排序方式,其中compare是需要復(fù)寫(xiě)的方法,類似于Comparable接口中的compareTo方法。
returnDouble是寫(xiě)的一個(gè)靜態(tài)方法,用來(lái)返回某個(gè)文件名字符串前面的數(shù)字編號(hào),如"1.1.txt"返回的就是"1.1",寫(xiě)的時(shí)候老是出現(xiàn)越界異常,后來(lái)終于改成功了,可能寫(xiě)得有點(diǎn)復(fù)雜了。
這樣再調(diào)用Arrays類中的sort(T[]?a, Comparator super T>?c)?方法就可以對(duì)文件名排序了。
總結(jié)
以上是生活随笔為你收集整理的java 视频合并_java 实现分段视频合并的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: channelsftp的put_java
- 下一篇: 推荐七款精挑细选的电脑软件,欢迎收藏!