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();
}
*/ }
04-03 04:47