java 显示视频时间--玩的
1.显示视频时间
package view.time; import it.sauronsoftware.jave.Encoder;
import it.sauronsoftware.jave.MultimediaInfo; import java.awt.Button;
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.Label;
import java.awt.TextArea;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List; public class ViewTimeGUI {
private Frame f;
private Button b;
private Button btn_all;
private Button btn_export;
private TextField tf;
private Label l;
private TextArea ta; public void ViewGui(){
init();
} private void init() {
// TODO Auto-generated method stub
f=new Frame("显示文件夹下所有视频时间及路径 jdk-1.7");
f.setBounds(300, 200, 795, 275);
f.setBackground(Color.lightGray);
f.setLayout(new FlowLayout()); l=new Label("文件夹路径:");
tf=new TextField(50);
tf.setText("C:/Users/Administrator/Desktop/sp/mp4");
b=new Button("查看flv格式视频");
btn_all=new Button("查看所有视频时间不限制格式");
ta=new TextArea();
ta.setColumns(200);
ta.setEditable(false);
btn_export=new Button("导出信息到记事本"); f.add(l);
f.add(tf);
f.add(b);
f.add(btn_all);
f.add(ta);
f.add(btn_export); event(); f.setVisible(true);
System.out.println("Hello world!");
} private void event() {
// TODO Auto-generated method stub
f.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
// TODO Auto-generated method stub
System.exit(0);
} });
/*
tf.addKeyListener(new KeyAdapter() {
public void keyPressed(KeyEvent e){
//验证键盘数字
int code=e.getKeyCode();
if(!(code>=KeyEvent.VK_0 && code<=KeyEvent.VK_9)){
System.out.println(code+"....非法的输入");
e.consume(); //不执行加入文本框.
} } });
*/ b.addActionListener(new ActionListener() { @Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
//System.out.println("actionPerformed 活动一次");
}
});
//查看按钮操作
b.addMouseListener(new MouseAdapter() {
private int count=0;
private int clickCount=1;
/*
//鼠标放在按钮上事件
public void mouseEntered(MouseEvent e){
System.out.println("鼠标进入到改组件"+count++);
}
*/ public void mouseClicked(MouseEvent e){ if(e.getClickCount()==2){
System.out.println("双击动作");
}else
{
String fileName=tf.getText().trim();
//判断文本框不能为空
if(fileName!=null&&fileName.length()>0)
{
File file =new File(fileName);
//文件夹不存在或不是文件夹目录
if (!file .exists() && !file .isDirectory())
{
//System.out.println("文件夹路径不存在或不是文件夹目录");
ta.append("文件夹路径不存在或不是文件夹目录!\r\n");
}else{
ta.setText("");
System.out.println("file+name"+fileName);
// String fileName="C:/Users/Administrator/Desktop/sp/mp4";
File f=new File(fileName);
print(f,ta);
System.out.println("点击动作"+clickCount++);
}
}else
{
ta.append("\r\n请填写文件路径!!\r\n");
}
} } });
btn_all.addMouseListener(new MouseAdapter(){
private int count=0;
private int clickCount=1;
/*
//鼠标放在按钮上事件
public void mouseEntered(MouseEvent e){
System.out.println("鼠标进入到改组件"+count++);
}
*/ public void mouseClicked(MouseEvent e){ if(e.getClickCount()==2){
System.out.println("双击动作");
}else
{
String fileName=tf.getText().trim();
//判断文本框不能为空
if(fileName!=null&&fileName.length()>0)
{
File file =new File(fileName);
//文件夹不存在或不是文件夹目录
if (!file .exists() && !file .isDirectory())
{
//System.out.println("文件夹路径不存在或不是文件夹目录");
ta.append("文件夹路径不存在或不是文件夹目录!\r\n");
}else{
ta.setText("");
System.out.println("file+name"+fileName);
// String fileName="C:/Users/Administrator/Desktop/sp/mp4";
File f=new File(fileName);
printAll(f,ta);
System.out.println("点击动作"+clickCount++);
}
}else
{
ta.append("\r\n请填写文件路径!!\r\n");
}
} }
});
//导出到记事本
btn_export.addMouseListener(new MouseAdapter() {
private int count=0;
private int clickCount=1;
/*
//鼠标放在按钮上事件
public void mouseEntered(MouseEvent e){
System.out.println("鼠标进入到改组件"+count++);
}
*/ public void mouseClicked(MouseEvent e){ if(e.getClickCount()==2){
System.out.println("双击动作");
}else
{
//文件路径
String filepath=null;
//ta文本框信息
String unamemessage=ta.getText().trim();
System.out.println("unamemessage:"+unamemessage);
// String fileName="C:/Users/Administrator/Desktop/sp/mp4";
//File f=new File();
//获取磁盘名称
List<String> list=getDiskName();
for(String str:list){
if(str.equals("D:\\")){
//有d盘的话 写入到d盘
String filename="Result.txt";
/**写入到记事本中*/
try {
filepath=str+filename;
BufferedWriter writer = new BufferedWriter(new FileWriter(new File(filepath), true));
writer.write(unamemessage);
// writer.write("文件名称:"+source.getName()+"\r\n");
writer.close();
} catch (IOException es) {
// TODO Auto-generated catch block
es.printStackTrace();
}
}else
{
System.out.println("没有d盘!");
}
}
//追加信息
ta.append("\r\n\r\n文件写入到了::"+filepath+"\r\n\r\n");
// System.out.println("点击动作"+clickCount++);
} } }); /*
//添加 键盘事件
b.addKeyListener(new KeyAdapter() { public void keyPressed(KeyEvent e){
System.out.println(e.getKeyChar()+"..."+e.getKeyCode());
System.out.println(KeyEvent.getKeyText(e.getKeyCode())+"..."+e.getKeyCode());
//enter 就退出
/*if(e.getKeyCode()==KeyEvent.VK_ENTER)
System.
exit(0);*/ /*
//ctrl + Enter 发送消息
if(e.isControlDown() && e.getKeyCode()==KeyEvent.VK_ENTER){
System.out.println("我要发送消息!");
} } }); */ } /*
//因为接口WindowLinstener中的所有方法都被子类 WindowAdapter实现了,.
//并且覆盖了其中的所有方法,那么我们只能继承 WindowAdapter 覆盖我们的方法即可
class MyWin extends WindowAdapter{ @Override
public void windowClosing(WindowEvent e) {
// TODO Auto-generated method stub
//System.out.println("Window closing"+e.toString());
System.out.println("我关了");
System.exit(0);
}
@Override
public void windowActivated(WindowEvent e) {
//每次获得焦点 就会触发
System.out.println("我活了");
//super.windowActivated(e);
}
@Override
public void windowOpened(WindowEvent e) {
// TODO Auto-generated method stub
System.out.println("我开了");
//super.windowOpened(e);
}
}
*/
/**
* 获取磁盘名称
* */
public List<String> getDiskName(){
List<String> list=new ArrayList<String>();
File [] root = File.listRoots();
for(File file : root)
{
//获取到的信息添加到list
list.add(file.getAbsolutePath());
System.out.println(file.getAbsolutePath()); }
return list;
}
/**递归查找所有文件
* flv
* */
public static void print(File f,TextArea ta){
String timeflvstr=null;
if(f!=null){
if(f.isDirectory()){
File[] fileArray=f.listFiles();
if(fileArray!=null){
for (int i = 0; i < fileArray.length; i++) {
//递归调用
print(fileArray[i],ta);
}
} }
else{
//处理mp4视频文件 只读取flv视频时间
if(f.getName().indexOf(".flv")!=-1){
//处理mp4
String timeflv=getVideoTime(f.getPath());
//System.out.println("name:"+f.getName()+"文件:"+f.getPath());
//显示和写入的信息
timeflvstr="时长为:"+timeflv;
//System.out.println("时长为:"+timeflv);
ta.append(timeflvstr);
ta.append("\r\n");
System.out.println(timeflvstr); }
//System.out.println(f);
}
} }
/**递归查找所有文件
* 所有视频
* */
public static void printAll(File f,TextArea ta){
String timeflvstr=null;
if(f!=null){
if(f.isDirectory()){
File[] fileArray=f.listFiles();
if(fileArray!=null){
for (int i = 0; i < fileArray.length; i++) {
//递归调用
printAll(fileArray[i],ta);
}
} }
else{
//获取所有视频
String timeflv=getVideoTime(f.getPath());
//System.out.println("name:"+f.getName()+"文件:"+f.getPath());
//显示和写入的信息
timeflvstr="时长为:"+timeflv;
//System.out.println("时长为:"+timeflv);
ta.append(timeflvstr);
ta.append("\r\n");
System.out.println(timeflvstr);
}
} }
/**获取单个文件视频时长*/
public static String getVideoTime(String filepaths){
File file=new File(filepaths);
String timegs = null;
Encoder encoder = new Encoder();
try {
MultimediaInfo m = encoder.getInfo(file);
long ls = m.getDuration()/1000;
// time = Double.parseDouble(new DecimalFormat("#.00").format(ls/(1000*60.0)));
long hh = ls/3600; //转为小时
long mm =ls%3600/60; // 转换为分钟
long ss=ls%60; //秒
timegs=hh+":"+mm+":"+ss+" filepath:"+file.getPath();
return timegs;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
/**获取整个文件夹下视频时长*/
public static void fileFolderSumTime(String filePath){
/**获取文件夹下的总时长*/
File source = new File(filePath);
Encoder encoder = new Encoder();
File[] file = source.listFiles();
long sum =0;
for (File file2: file) {
try {
MultimediaInfo m = encoder.getInfo(file2);
long ls = m.getDuration()/1000; //ls是获取到的秒数18
sum += ls;
} catch (Exception e) {
e.printStackTrace();
}
}
long hh = sum/3600; //转为小时
long mm =sum%3600/60; // 转换为分钟
long ss=sum%60; //秒
System.out.println("总时长为--:"+hh+"::"+mm+"::"+ss);
System.out.println("文件路径为:"+source.getPath());
//System.out.println("文件名称:"+source.getName());
/**写入到记事本中*/
try {
BufferedWriter writer = new BufferedWriter(new FileWriter(new File("d:\\Result.txt"), true));
writer.write("总时长为--:"+hh+"::"+mm+"::"+ss+"\r\n");
writer.write("文件路径为:"+source.getPath()+"\r\n");
// writer.write("文件名称:"+source.getName()+"\r\n");
writer.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} } //获取文件时长,备用
// TODO Auto-generated method stub
//File file=new File("C:/Users/Administrator/Desktop/sp/012 - Unity3D界面-Scene视图(3).mp4");
/* File source = new File("E:\\测试视频\\R41.avi");
Encoder encoder = new Encoder();
try {
MultimediaInfo m = encoder.getInfo(source);
long ls = m.getDuration();
System.out.println(s/1000+"秒!");
} catch (Exception e) {
e.printStackTrace();
}
*/ }
java 显示视频时间--玩的的更多相关文章
- java 获取视频时间
//先将视频保存到项目生成临时文件,获取时长后删除临时文件 // 使用fastdfs进行文件上传 @RequestMapping("/uploadVideoToFast") @Re ...
- ASP.NET如何显示农历时间
ASP.NET如何显示农历时间 CS部分代码如下: 代码如下: public string ChineseTimeNow = ""; public string ForignTi ...
- Linux显示以时间降序显示文件
Linux显示以时间降序显示文件 youhaidong@youhaidong-ThinkPad-Edge-E545:~$ ls -lrt 总用量 56 -rw-r--r-- 1 youhaidong ...
- 前端开发自学之JavaScript——显示当前时间
<html> <head> <title>JavaScript</title> <script language="javascript ...
- OpenCV: imshow后不加waitkey无法显示视频
OpenCV显示视频帧时出现一个问题,就是imshow之后若是不加waitkey则无法显示,找了很久也没找到原因. 只是发现也有人发现这个问题: cvWaitKey(x) / cv::waitKe ...
- Java最重要的21个技术点和知识点之JAVA多线程、时间处理、数据格式
(四)Java最重要的21个技术点和知识点之JAVA多线程.时间处理.数据格式 写这篇文章的目的是想总结一下自己这么多年JAVA培训的一些心得体会,主要是和一些java基础知识点相关的,所以也希望能 ...
- ffmpeg显示视频
项目最近需要实现播放视频功能,这个在上家公司就做过.虽然跟之前的场景不一样,有以前的功底还是很快可以解决,事实也确实如此.在使用DShow处理完视频分割与合并后,继续使用DShow显示视频,很快即完成 ...
- java 实现视频转换通用工具类:视频截图-Ffmpeg(四)
java 实现视频转换通用工具类:获取视频元数据信息(一) java 实现视频转换通用工具类:视频相互转换-总方法及Mencoder(二) java 实现视频转换通用工具类:视频相互转换-Ffmpeg ...
- java 实现视频转换通用工具类:视频相互转换-Ffmpeg(三)
java 实现视频转换通用工具类:获取视频元数据信息(一) java 实现视频转换通用工具类:视频相互转换-总方法及Mencoder(二) 这节主要是ffmpeg的相关方法封装,在实际调用中主要使用f ...
随机推荐
- JS学习笔记(一)基本数据类型和对象类型
js是一种弱类型的语言,所有的变量都用var进行声明,字符串用双引号或单引号括起来,常见基本数据类型为number,string,boolean等.如 var num = 123;或var num = ...
- iOS 16进制颜色转换10进制颜色
+(UIColor *)colorWithHexString:(NSString *)coloStr{ // 检索 去下空格和换行 转成大写 NSString *cString = [[col ...
- vsvim _vsvimrc 设置(转)
c_joewang的专栏 (转) vsvim安装到vs2010后可以使用绝大部分原生vim的编辑功能,包括宏录制,也可以通过配置设置键盘映射,关于支持的编辑功能等可以参考上面链接去查看相关文档. Vi ...
- Java学习之字符串练习
1.给定一个字符串数组.按照字典顺序进行从小到大的排序. * 思路: * 1,对数组排序.可以用选择,冒泡都行. * 2,for嵌套和比较以及换位. * 3,问题:以前排的是整数,比较用的比较运算符, ...
- MySql连接异常解决
这两天遇到一个mysql连接的问题,找人弄了好几天也没弄好,先看一下报错信息: ============================================================ ...
- Mysql 批量杀死进程
正常情况下kill id,即可,但是有时候某一异常连接特别多的时候如此操作会让人抓狂,下面记录下小方法: use information_schema; select concat('kill ',i ...
- Mysql 如何做双机热备和负载均衡 (方法二)
先简要介绍一下mysql双向热备:mysql从3.23.15版本以后提供数据库复制功能.利用该功能可以实现两个数据库同步,主从模式(A->B),互相备份模式(A<=>B)的功能. m ...
- JavaScript版排序算法
JavaScript版排序算法:冒泡排序.快速排序.插入排序.希尔排序(小数据时,希尔排序会比快排快哦) //排序算法 window.onload = function(){ var array = ...
- MFC解决Static控件背景透明时文本覆盖重影
通过映射OnCtlColor消息,而后在该函数中使用pDC->SetBkMode(TRANSPARENT)使Static控件背景透明时会出现:文本覆盖重影的问题,当改变控件的文本就会发生新文本与 ...
- Windows下如何建立以"."开头的文件夹
Windows资源管理器不允许创建点开头的文件或文件夹,但在cmd命令提示符下是可以的: 创建命令: md d:\.myfolder .myfolder就是以点开头的文件夹的名称