正在做一个视频通话的项目,卡在了一个问题上,需要截取视频确定问题。其中有用到要获取每一帧。于是想到了视频切割。

思路是这样的:首先得到视频的总帧数,然后获取文件的总大小,每一帧的大小=总大小/总帧数;我们把视频按照一帧的大小逐个切割,就能拿到每一帧了。

package com.larson;import java.io.BufferedInputStream;
import java.io.BufferedWriter;
import java.io.DataInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.RandomAccessFile;/*** * @author Larson* @since 2015年9月23日*/
public class CutFile {/*** * @param fileName*            文件所在路径* @param unitSize*            每个小文件的大小* @param targetDir*            分割后小文件所在的文件夹* @param startPos*            从文件哪里开始,默认从0开始* @return* @throws Exception*/public int dofileCut(String fileName, long unitSize, String targetDir, long startPos) throws Exception {if (startPos < 0)startPos = 0;File file = new File(fileName);long size = file.length();// 总字节数int count = 0;// 小文件数long last = 0;// 剩余字节数DataInputStream dis = new DataInputStream(new BufferedInputStream(new FileInputStream(file), (int) unitSize));byte[] databuf = new byte[(int) unitSize];while (startPos < size) {count++;last = size - startPos;if (last < unitSize)databuf = new byte[(int) last];dis.read(databuf);System.out.println("count=" + count + ";pos=" + startPos + ";databuf.length=" + databuf.length);startPos = startPos + databuf.length;// 写小文件try {RandomAccessFile raFile = new RandomAccessFile(targetDir + file.getName() + "_" + count, "rw");raFile.write(databuf);raFile.close();} catch (Exception e) {throw e;}}// 记载小文件数File file1 = new File(targetDir + file.getName() + "_count");FileWriter fWriter = new FileWriter(file1);BufferedWriter bWriter = new BufferedWriter(fWriter);String string = (new Integer(count)).toString();bWriter.write(string, 0, string.length());bWriter.flush();bWriter.close();return count;}
}

入口参数传递:

package com.larson;import java.io.File;
/*** * @author Larson* @since 2015年9月23日*/
public class CutMain {public static void main(String[] args) {String fileName = "D:\\1442912080242.yuv_1";long fileLen = new File(fileName).length();long startPos = 0;long unitSize = fileLen/100;String targetDir = "D:\\1442912080242_cutted\\";try {int count = new CutFile().dofileCut(fileName, unitSize, targetDir,startPos);System.out.println("小文件数量为"+count); } catch (Exception e) {e.printStackTrace();}}
}

demo查看 附件。

java文件切割工具相关推荐

  1. java日志切割工具_用 Java 实现的日志切割清理工具

    对于服务器的日常维护来说,日志清理是非常重要的事情,如果残留日志过多则严重浪费磁盘空间同时影响服务的性能.如果用手工方式进行清理,会花费太多时间,并且很多时候难以满足实际要求.例如:如何在每个星期六凌 ...

  2. java日志切割工具_JavaSwing版本的日志文件分割器

    JavaSwing版本的日志文件分割器 功能: 分割比100M还大的日志为多个100M的左右的小日志 上效果图 使用方法 点击打开按钮 打开一个log文件,然后点击切割按钮 直接上代码 package ...

  3. 电脑查看java文件的工具_everything电脑文件搜索工具

    everthing电脑搜索工具 2020/7/6 电子拆解 今天跟大家介绍一款基于JAVA的电脑搜索软件,具有效率高,搜索全的优点.话不多少,先上图 图1 这是安装好的搜索界面,下面教大家怎么安装: ...

  4. cloc JAVA文件_工具-cloc代码行数统计工具

    cloc 代码行统计工具 计算代码行.注释行.空行量的工具.支持多种语言. 例如统计一下vue项目里的src文件夹下的代码: 安装方式 npm install -g cloc # https://ww ...

  5. java文件切割_Java实现文件切割拼接的实现代码

    单线程实现 文件分割 在老的FAT32文件系统中,最大的单个文件大小必须保存在4G内,对于经常看电影的我这个是不能允许的.不过现在Windows有NTFS文件系统,Linux大部分发行版为Ext4文件 ...

  6. Java 文件转换工具类(word,html,excel,pdf,md,jpeg,png互转)

    一.前言 目前支持: word 转 html doc 转 docx html 转 word html 转 pdf excel 转 pdf word 转 jpeg word 转 png markdown ...

  7. JAVA 如何将class文件转换成java文件

    说明 若将应用部署到了服务器上或者将JAVA文件编译成了class文件之后,而原JAVA代码又因为某些原因丢失了,那么能否将Class文件转换为JAVA文件? 工具 JAVA反编译工具 jad.exe ...

  8. 【反编译】安卓APK反编译为java文件

    [反编译]安卓APK反编译为java文件 准备工具 要反编译的apk文件, 以微信8.0.apk为例子 dex2jar   下载地址 dex2jar-2.0反编译.zip-Android文档类资源-C ...

  9. java控制器文件内容替换_如何用Java来进行文件切割和简单的内容过滤的实现

    一 由来 去年由于项目的需求,要将一个任意一个文件制作成一个xml文件,并且需要保持文件内容本身不产生变化,还要能够将这个xml重新还原为原文件.如果小型的文件还好处理,大型的xml,比如几个G的文件 ...

  10. 如何用Java来进行文件切割和简单的内容过滤

    一 由来 去年由于项目的需求,要将一个任意一个文件制作成一个xml文件,并且需要保持文件内容本身不产生变化,还要能够将这个xml重新还原为原文件.如果小型的文件还好处理,大型的xml,比如几个G的文件 ...

最新文章

  1. C++的多个有序链表合并
  2. 借条的注意事项,上面不能有这3个字
  3. 设计模式之:适配器模式
  4. matlab如何绘制三维隐函数?
  5. ueditor 编辑器再thinkphp中使用 解决转义问题
  6. STM32 - 定时器高级应用说明 - 多触波的实现 (N-pulse waveform generation using timer synchronization)- 01
  7. 利用VBA把PowerDesigner的comment复制到name
  8. 一些值得注意的算法题——队列、栈
  9. Softmax的推导以及实现
  10. Mathcad绘制三维曲面图
  11. 七.项目管理基础知识
  12. tig只看某个作者的提交
  13. 2011年国庆2天厦门到平潭岛湄洲岛自驾游
  14. 紫光云服务器芯片,紫光云与新华三半导体共建芯片设计云2.0 携手打造一站式云端芯片平台...
  15. 论OSPF中ASBR和ABR
  16. 校园网免认证利用IPV6轻松绕过校园WiFi网关
  17. 像《我是歌手》一样说我是程序员
  18. Verilog学习总结
  19. 介绍一款数据库管理软件
  20. postman断言—Chai.js语法总结

热门文章

  1. 有哪些有用的人际交往小常识?
  2. HDU 5745 La Vie en rose 字符串匹配(暴力)
  3. 大学物理(Ⅱ)公式整理
  4. 论文中常见的argmin,argmax是什么意思?
  5. Network Switching Software Platform Guide学习笔记
  6. 1880-2010年间全美婴儿姓名
  7. linux如何删除多余引导
  8. 2019第八届“中国软件杯”大学生软件设计大赛赛题有哪些?
  9. 2022国产芯片技术创新与市场应用论坛即将召开
  10. Cesium离线地图极简教程