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();
}
*/ }

最新文章

  1. 为select 设置样式
  2. 结果集(result set)解释与用法
  3. jade学习02
  4. WebApi与手机客户端通信安全机制
  5. X86架构CPU的逻辑原理
  6. oracle忘记用户密码
  7. ARM 汇编器对C的扩展
  8. php运行
  9. 搭建一个BS 的简单SOA 架构(直接通过jquery 调用后台的 wcf 服务的架构)(第一天)
  10. HNU 13064 Cuckoo for Hashing解题报告 North America - East Central 2013
  11. Redis Sentinel 机制与用法(二)
  12. http://codeforces.com/problemset/problem/712/D
  13. 洛谷 P1338 末日的传说
  14. 【原创】NVIC中断
  15. 从零开始 DOM操作 笔记
  16. 关于Intel漏洞的学习
  17. nc6 用业务插件注册来跑按钮事件
  18. vue实现带规格商品的表格编辑
  19. SpringBoot 中 @RequestBody的正确使用方法
  20. mysql 数据字典

热门文章

  1. 轻轻谈一下seaJs——模块化开发的利器
  2. 从零开始Unity3D游戏开发【1 常用快捷键】
  3. xcode - 触摸移动
  4. 二、获取AccessToken
  5. 用VIM删除空行
  6. UpdatePanel + 弹出框
  7. Win7下安装Mysql方法
  8. 像jq那样获取对象的js原生方法
  9. 0. chromium源代码分析 - 序
  10. leetcode Reverse Integer python