java 实现分段视频合并
原文地址:https://blog.csdn.net/chenyun19890626/article/details/54631817
原理很简单就是把多个视频文件的内容按顺序写到一个视频文件中
代码如下:
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数据,将读取到的数据保存到byte字节数组中 int len; if(dirFile.isDirectory()) { //判断file是否为目录 String[] fileNames = dirFile.list(); Arrays.sort(fileNames, new StringComparator());//实现目录自定义排序 for (int i = 0;i<fileNames.length ;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从指定字节数组写入。buffer:数据中的起始偏移量,len:写入的字数。 } fis.close(); } } fos.flush(); fos.close(); }catch (IOException e){ e.printStackTrace(); } finally { System.out.println("合并完成!"); } }
在读取要合并的文件时,需要按拆分后的顺序读取文件,这是就需要文件自定义目录排序
原文地址:https://blog.csdn.net/iamaboyy/article/details/9234459
用Java列出某个文件目录的文件列表是很容易实现的,只用调用File类中的list()方法即可。
代码如下:
/此类实现Comparable接口 static class StringComparator implements Comparator<String> { @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<str.length();i++){ if(Character.isDigit(str.charAt(i))) sb.append(str.charAt(i)); else if(str.charAt(i)=='.'&&i<str.length()-1&&Character.isDigit(str.charAt(i+1))) sb.append(str.charAt(i)); else break; } if(sb.toString().isEmpty()) return 0; else return Double.parseDouble(sb.toString()); }
由类StringComparator实现Comparator接口就可以改变String类型的默认排序方式,其中compare是需要复写的方法,类似于Comparable接口中的compareTo方法。
returnDouble是写的一个静态方法,用来返回某个文件名字符串前面的数字编号,如"1.1.txt"返回的就是"1.1",写的时候老是出现越界异常,后来终于改成功了,可能写得有点复杂了。
这样再调用Arrays类中的sort(T[] a, Comparator<? super T> c)
方法就可以对文件名排序了。
__EOF__

本文作者:皮军旗
本文链接:https://www.cnblogs.com/pijunqi/p/14265301.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
本文链接:https://www.cnblogs.com/pijunqi/p/14265301.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
本文来自博客园,作者:皮军旗,转载请注明原文链接:https://www.cnblogs.com/pijunqi/p/14265301.html
分类:
springBoot
标签:
合并
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人