A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 欧阳梦南 于 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小时哎~~~
其中最后的那个代表学完当前目录后的所学百分比。 快看看你们都学完多少了。





附上源码吧~ 来个分割线,如果想玩一玩程序,可以往下看哦

-----------------------------------------------------------------------分割线--------------------------------------------------------------------
  1. class CtrlFtpFile {
  2. public int time=0;


  3. //读取Dll
  4. static {
  5. System.loadLibrary("GetPlayTime");
  6. }

  7. public native String getMediaTime(String arg);


  8. }
  9. public class GetTotalTime
  10. {
  11. public static void main(String[] args) {


  12. File dir=new File("F:\\黑马");
  13. FirstCatalog(dir);
  14. System.out.println("当前目录(不包括子目录)视频时间:"+dir.getAbsolutePath()+"\t时间"+getTime(currenttime));
  15. System.out.println("总时间:"+getTime(totaltime));

  16. }

  17. public static int time = 0;
  18. public static int totaltime = 0;
  19. public static int currenttime = 0;// 此时间为当前所在目录的视频时间(不包括子目录),如果当前目录没视频,则为0

  20. public static void FirstCatalog(File dir) {
  21. File[] files = dir.listFiles();
  22. for (int x = 0; x < files.length; x++) {

  23. if (files[x].isDirectory()) {
  24. System.out.print("目录:" + files[x].getAbsolutePath() + "\t时间:");
  25. Catalog(files[x]);
  26. System.out.print(getTime(time));
  27. System.out.print("\t百分比:");
  28. totaltime += time;
  29. time = 0;


  30. /* double d = totaltime / 354318.00;//这个数字是事先获取到的总时间(单位秒)
  31. DecimalFormat df = new DecimalFormat("##.00%");
  32. System.out.println(df.format(d));*/


  33. } else {
  34. currenttime = getSecond(files[x]);

  35. totaltime += currenttime;
  36. }
  37. }

  38. }

  39. public static void Catalog(File dir) {
  40. File[] files = dir.listFiles();
  41. for (int x = 0; x < files.length; x++) {
  42. if (files[x].isDirectory()) {
  43. Catalog(files[x]);
  44. } else
  45. time += getSecond(files[x]);
  46. }
  47. }
  48. public static int getSecond(File file) {
  49. CtrlFtpFile hw = new CtrlFtpFile();
  50. int time = Integer.parseInt(hw.getMediaTime(file.toString()));
  51. return time;
  52. }
  53. public static String getTime(int t) {
  54. Integer minute = t / 60;
  55. Integer second = t % 60;
  56. Integer hour = minute / 60;
  57. minute = minute % 60;
  58. String FormatTime = hour.toString() + "小时" + minute.toString() + "分"
  59. + second.toString() + "秒";
  60. return FormatTime;
  61. }}
复制代码
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




评分

参与人数 2技术分 +2 黑马币 +5 收起 理由
suiabing + 5 很给力!
贠(yun)靖 + 2 赞一个!

查看全部评分

9 个回复

倒序浏览
表示关注
回复 使用道具 举报
顶一个!!屌!!
回复 使用道具 举报
想法很不错。赞叹不已……佩服{:soso_e183:}
回复 使用道具 举报
{:soso_e100:}
回复 使用道具 举报
嗯不错 给力啊
回复 使用道具 举报
表示还有一些不懂的地方,不知道能不能解答一下,关于目录:F:\java提高\18-19        时间:Exception in thread "main" java.lang.UnsatisfiedLinkError: no GetPlayTime in java.library.path
        at java.lang.ClassLoader.loadLibrary(Unknown Source)
        at java.lang.Runtime.loadLibrary0(Unknown Source)
        at java.lang.System.loadLibrary(Unknown Source)
        at CtrlFtpFile.<clinit>(Text17.java:8)
        at Text17.getSecond(Text17.java:68)
        at Text17.Catalog(Text17.java:63)
        at Text17.Catalog(Text17.java:61)
        at Text17.FirstCatalog(Text17.java:36)
        at Text17.main(Text17.java:19)
回复 使用道具 举报
飞舞❤心动 发表于 2012-5-9 00:38
表示还有一些不懂的地方,不知道能不能解答一下,关于目录:F:\java提高\18-19        时间:Exception in thread " ...

看博客的注意事项了么? 有个dll文件需要放在c盘的。
如果没看,就按那个注意事项操作一下。应该就可以了
回复 使用道具 举报
黄秋 黑马帝 2012-5-9 02:18:36
9#
欧阳梦南 发表于 2012-5-9 01:06
看博客的注意事项了么? 有个dll文件需要放在c盘的。
如果没看,就按那个注意事项操作一下。应该就可以了 ...

程序虽好,但还是说两句。怎么不把博客的注意事项,复制过来呢,而非要人去那边再看看。那边是技术论坛,这边也是,这样有炒作自己博客之嫌。
回复 使用道具 举报
黄秋 发表于 2012-5-9 02:18
程序虽好,但还是说两句。怎么不把博客的注意事项,复制过来呢,而非要人去那边再看看。那边是技术论坛, ...

嗯嗯,你说的也是哦,已添加进来了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马