本帖最后由 欧阳梦南 于 2012-5-9 02:32 编辑
在学习黑马视频的过程中,很喜欢黑马的视频命名方式,每个视频都会在名称上告诉你这个视频所讲的内容,这样对于我们以后进行针对复习和查找提供了很多便利。但这也造成了每个视频长度偏短,视频数量过多。这样就很难把握自己学了多少,还有多少没学,以及视频一共多长时间等信息。我曾记得用windows批量点中后—>属性,会显示总的视频时间,但可能是指定格式才可以显示,反正没成功。我自己用的qq影音、暴风影音也不能显示多个视频的总时间(其他播放器没试)。无奈到网上搜索相应的软件,也没有找到。
想到正好自己在学习编程就自己写一个吧,到网上找相关代码,发现都是利用什么JMF,FFMPEG,QuickTime-API什么的,反正是看不懂。此时发现一博客(http://jatula.iteye.com/blog/259328)有关于利用DLL文件获取视频长度的程序,很简单,自己试了一下,发现可以成功,DLL文件的作者不认识,也不知道运行原理,反正就是能获取,也正好正在学File类,就自己包装了一下。为黑马的战友们献上,制定自己的学习计划。在清楚学习进度的情况下掌握好基础,并祝早日进入黑马。
以下是获取到的视频时间信息,所有黑马基础视频哦
- 目录:F:\黑马\day01 时间:2小时26分27秒 百分比:2.48%
- 目录:F:\黑马\day02 时间:4小时24分46秒 百分比:6.96%
- 目录:F:\黑马\day03 时间:3小时38分39秒 百分比:10.67%
- 目录:F:\黑马\day04 时间:3小时26分51秒 百分比:14.17%
- 目录:F:\黑马\day05 时间:3小时32分8秒 百分比:17.76%
- 目录:F:\黑马\day06 时间:3小时35分17秒 百分比:21.41%
- 目录:F:\黑马\day07 时间:3小时36分9秒 百分比:25.07%
- 目录:F:\黑马\day08 时间:2小时49分41秒 百分比:27.94%
- 目录:F:\黑马\day09 时间:3小时43分59秒 百分比:31.73%
- 目录:F:\黑马\day10 时间:3小时31分55秒 百分比:35.32%
- 目录:F:\黑马\day11 时间:3小时29分31秒 百分比:38.87%
- 目录:F:\黑马\day12 时间:2小时37分10秒 百分比:41.53%
- 目录:F:\黑马\day13 时间:3小时30分6秒 百分比:45.09%
- 目录:F:\黑马\day14 时间:3小时30分28秒 百分比:48.65%
- 目录:F:\黑马\day15 时间:2小时43分35秒 百分比:51.42%
- 目录:F:\黑马\day16 时间:2小时16分55秒 百分比:53.74%
- 目录:F:\黑马\day17 时间:2小时1分8秒 百分比:55.79%
- 目录:F:\黑马\day18 时间:3小时33分2秒 百分比:59.40%
- 目录:F:\黑马\day19 时间:4小时11分41秒 百分比:63.66%
- 目录:F:\黑马\day20 时间:3小时54分0秒 百分比:67.63%
- 目录:F:\黑马\day21 时间:3小时47分30秒 百分比:71.48%
- 目录:F:\黑马\day22 时间:3小时48分22秒 百分比:75.34%
- 目录:F:\黑马\day23 时间:4小时8分13秒 百分比:79.55%
- 目录:F:\黑马\day24 时间:2小时41分27秒 百分比:82.28%
- 目录:F:\黑马\z1高新技术 时间:13小时1分47秒 百分比:95.52%
- 目录:F:\黑马\z2交通灯管理系统 时间:2小时23分1秒 百分比:97.94%
- 目录:F:\黑马\z3银行业务调度系统 时间:2小时1分30秒 百分比:100.00%
- 当前目录(不包括子目录)视频时间:F:\黑马 时间0小时0分0秒
- 总时间:98小时25分18秒
哇塞 98小时哎~~~
其中最后的那个代表学完当前目录后的所学百分比。 快看看你们都学完多少了。
附上源码吧~ 来个分割线,如果想玩一玩程序,可以往下看哦
-----------------------------------------------------------------------分割线--------------------------------------------------------------------
- class CtrlFtpFile {
- public int time=0;
- //读取Dll
- static {
- System.loadLibrary("GetPlayTime");
- }
- public native String getMediaTime(String arg);
- }
- public class GetTotalTime
- {
- public static void main(String[] args) {
- File dir=new File("F:\\黑马");
- FirstCatalog(dir);
- System.out.println("当前目录(不包括子目录)视频时间:"+dir.getAbsolutePath()+"\t时间"+getTime(currenttime));
- System.out.println("总时间:"+getTime(totaltime));
- }
- public static int time = 0;
- public static int totaltime = 0;
- public static int currenttime = 0;// 此时间为当前所在目录的视频时间(不包括子目录),如果当前目录没视频,则为0
- public static void FirstCatalog(File dir) {
- File[] files = dir.listFiles();
- for (int x = 0; x < files.length; x++) {
- if (files[x].isDirectory()) {
- System.out.print("目录:" + files[x].getAbsolutePath() + "\t时间:");
- Catalog(files[x]);
- System.out.print(getTime(time));
- System.out.print("\t百分比:");
- totaltime += time;
- time = 0;
- /* double d = totaltime / 354318.00;//这个数字是事先获取到的总时间(单位秒)
- DecimalFormat df = new DecimalFormat("##.00%");
- System.out.println(df.format(d));*/
- } else {
- currenttime = getSecond(files[x]);
- totaltime += currenttime;
- }
- }
- }
- public static void Catalog(File dir) {
- File[] files = dir.listFiles();
- for (int x = 0; x < files.length; x++) {
- if (files[x].isDirectory()) {
- Catalog(files[x]);
- } else
- time += getSecond(files[x]);
- }
- }
- public static int getSecond(File file) {
- CtrlFtpFile hw = new CtrlFtpFile();
- int time = Integer.parseInt(hw.getMediaTime(file.toString()));
- return time;
- }
- public static String getTime(int t) {
- Integer minute = t / 60;
- Integer second = t % 60;
- Integer hour = minute / 60;
- minute = minute % 60;
- String FormatTime = hour.toString() + "小时" + minute.toString() + "分"
- + second.toString() + "秒";
- return FormatTime;
- }}
复制代码 File dir=new File("F:\\黑马");此目录指向视频的总目录,由于黑马视频一般是一天的课放在一个目录,用第一轮(public static void FirstCatalog(File dir)), 去遍历"F:\\黑马"目录里的所有文件夹,然后再传入所有文件夹名字进去{Catalog(File dir)}进行递归调用。其实应该可以写成一个函数,但对递归不是很熟悉。没想出来。明白的来探讨一下哦。
说下注意的东西:
必须在这个包中写这个程序 package com.avedia.transfers.struts.action; 这是由DLL文件决定的。 CtrlFtpFile这个类名不能改。
附件的DLL文件要放在c:\windows\system32下,DLL附件到这下载 http://download.csdn.net/detail/oymnoymn/4284234,破博客还不让传附件 看下DLL里面的东西 我的博客 http://blog.csdn.net/oymnoymn/article/details/7544502
|