统计《ASP.Net特供视频教程》总长度
忽然想统计一下我录制过的视频一共多长时间,由于视频文件很多,一共72个,挨个打开进行累加不是程序员应该想起的办法。所以就打算写一个程序来完成这件事,最核心的问题就是“获得一个视频文件的时长”。 ffmpeg是一个专业的音频视频处理开源技术,借助于它可以完成视频转码、视频截图、视频提取等工作,ffmepg也提供了获取视频长度的方法,不过想想只是获取视频长度这么一件事就要动用ffmpeg有点“杀鸡用牛刀”的感觉,所以就上网搜寻是否有其他获得视频文件长度的方法,很快就找到了这样一篇文章《C# 获取视频文件播放时长》,使用下面的代码就可以获得视频文件的长度:
public string GetMediaTimeLen(string path)
{
try
{
Shell32.Shell shell = new Shell32.ShellClass();
Shell32.Folder folder = shell.NameSpace(path.Substring(, path.LastIndexOf("\\")));
Shell32.FolderItem folderitem =
folder.ParseName(path.Substring(path.LastIndexOf("\\") + ));
if (Environment.OSVersion.Version.Major >= )
{
return folder.GetDetailsOf(folderitem, );
}
else
{
return folder.GetDetailsOf(folderitem, );
}
}
catch (Exception ex)
{
return null;
}
}
把这段代码放到VS中编译,发现找不到Shell32.Shell等类,原来还需要手动引入Shell32这个Com组件,太麻烦。我想到借助于C#中的dynamic新特性可以简化Com组件调用,就把代码改写成如下:
public static string GetMediaTimeLen(string path)
{
System.Type objType = System.Type.GetTypeFromProgID("Shell.Application");
dynamic shell = System.Activator.CreateInstance(objType);
//文件路径
dynamic folder = shell.NameSpace(path.Substring(, path.LastIndexOf("\\")));
//文件名称
dynamic folderitem = folder.ParseName(path.Substring(path.LastIndexOf("\\") + ));
if (Environment.OSVersion.Version.Major >= )
{
return folder.GetDetailsOf(folderitem, );
}
else
{
return folder.GetDetailsOf(folderitem, );
}
}
接下来的程序就很简单了,遍历文件夹下所有的.wmv文件,然后把每个文件的时长累加即可:
string[] files = System.IO.Directory.GetFiles(@"F:\视频教程\2013年底asp.net公开课\剪辑后", "*.wmv", System.IO.SearchOption.AllDirectories);
TimeSpan tsTotal = TimeSpan.Zero;
foreach (string file in files)
{
string len = GetMediaTimeLen(file);
TimeSpan tsLen = TimeSpan.Parse(len);
tsTotal += tsLen;
}
Console.WriteLine(tsTotal);
程序运行了一会就得到了结果“16:27:35”!
从ASP.Net零基础到学生熟悉ASP.Net的本质、会使用ASP.Net实现增删改查程序、掌握Cookie/Session的原理、掌握AJAX到最后使用ASP.Net开发一个企业网站系统,只用16个小时,这种自豪感瞬间爆棚!
如鹏网.Net培训班正在报名,有网络的地方就可以参加如鹏网的学习,学完就能高薪就业,点击此处了解
三年前只要懂“三层架构”就可以说“精通分层架构”;现在则需要懂IOC(AutoFac等)、CodeFirst、lambda、DTO等才值钱;
三年前只要会SQLServer就可以说自己“精通数据库开发”;现在则需还需要掌握MySQL等开源数据库才能说是“.Net开源”时代的程序员;
三年前只要会进行用户上传内容的安全性处理即可;现在则需要熟悉云存储、CDN等才能在云计算时代游刃有余;
三年前只要掌握Lucene.Net就会说自己“熟悉站内搜索引擎开发”;现在大家都用ElasticSearch了,你还用Lucene.Net就太老土了;
三年前发邮件还是用SmtpClient;现在做大型网站发邮件必须用云邮件引擎;
三年前缓存就是Context.Cache;现在则是Redis、Memcached的天下;
如鹏网再次引领.Net社区技术潮流!点击此处了解如鹏网.Net最新课程
统计《ASP.Net特供视频教程》总长度的更多相关文章
- 一条直线上N个线段所覆盖的总长度
原文:http://blog.csdn.net/bxyill/article/details/8962832 问题描述: 现有一直线,从原点到无穷大. 这条直线上有N个线段.线段可能相交. 问,N个线 ...
- Asp.net MVC入门视频教程
编程开发 > Asp.net视频教程 > Asp.net MVC入门视频教程 > 1.传统web处理方式和mvc处理方式 上传日期:2014-08-16 10:02:45 相关摘要 ...
- ASP.NET 开发学习视频教程大全(共800集)
ASP.NET是微软.NET平台的支柱之一,被广泛应用在WEB等互联网开发领域,因此它的强大性和适应性,可以使它运行在Web应用软件开发者的几乎全部的平台上.这里整理了最全的ASP.NET开发学习 ...
- ASP.NET开发学习视频教程大全(共800集)
ASP.NET是微软.NET平台的支柱之一,被广泛应用在WEB等互联网开发领域,因此它的强大性和适应性,可以使它运行在Web应用软件开发者的几乎全部的平台上.这里整理了最全的ASP.NET开发学习视频 ...
- Mongoose 分页查询优化、获取数据总长度
无论是传统网页还是 ajax api,我们都不得不进行数据分页,一来节省带宽二来提升页面响应速度.作为一个数据完备的 web 应用,做好分页功能能极大提升用户体验. 简单的分页查询 在 mongoos ...
- js 只能输入英文和数字,且首位必须是字母,字母总数不能超过3个,总长度不能超过20!
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/ ...
- ASP程序中调用Now()总显示“上午”和“下午”,如何解决?
ASP程序中调用Now()总显示这样的格式:“2007-4-20 下午 06:06:38”,我要的正确格式为“2007-4-20 18:06:38”,我已经通过控制面板==>区域和语言选项==& ...
- C 循环统计输入的单词个数和字符长度
C 循环统计输入的单词个数和字符长度 #include <stdio.h> #include <Windows.h> int main(void) { ]; ; ; print ...
- windows 7 下,如何统计某文件夹下 视频总时长
由于项目需要,我需要给系统加权限,这真是一个让人头疼的问题,如果要每个业务方法都加上权限判断逻辑,那真的不敢想象是多么大的工作量,日后有变动的话,我会不会发疯? 所以我必须利用之前学到的AOP编程,在 ...
随机推荐
- NHibernate系列文章二十六:NHibernate查询之SQL Query查询(附程序下载)
摘要 NHibernate在很早的版本就提供了SQL Query(原生SQL查询),对于很复杂的查询,如果使用其他的查询方式实现比较困难的时候,一般使用SQL Query.使用SQL Query是基于 ...
- Egret 摇一摇功能
一 什么是重力感应 二 什么是陀螺仪 三 Egret中的摇一摇是利用什么原理实现的 四 摇一摇代码 一 什么是重力感应 二 什么是陀螺仪 三 Egret中的摇一摇是利用什么原理实现的 大概是利用手机 ...
- CentOS6.5 Openssl版本升级
CentOS6.5 Openssl 升级: 第一步:在openssl官网(https://www.openssl.org/)下载最新版 Ps:个人使用的是openssl-1.0.1u.tar.gz版 ...
- Java串口通信详解
http://blog.csdn.net/kabini/article/details/1601324 ———————————————————————————————————————————————— ...
- archlinux pacman 常用选项
pacman -S package_name #安装软件包pacman -R package_name #删除软件包 pacman -Rs package_name #顺便删除软件包相关依赖pacma ...
- PHP基于SOAP实现webservice
简单对象访问协议(SOAP)是一种轻量的.简单的.基于 XML 的协议,它被设计成在 WEB 上交换结构化的和固化的信息. SOAP 可以和现存的许多因特网协议和格式结合使用,包括超文本传输协议( H ...
- 自动获取socket链接状态
C# TcpClient在连接成功后无法检测连接状态,即使对方关闭了网络连接.以下扩展可检测连接状态: static class TcpClientEx { public static bool Is ...
- android及IOS的测试中容易疏漏或者测漏的点——持续更新
1.控件的生命周期——控件消隐之后,会不会依然可点,导致出现进一步的响应?这个之前没想过,之后需要加入到测试点中 2.在登录界面同时出现弹窗: 如:特殊情况下,同时出现弹窗,又刚好退出登录,因此登录界 ...
- html+css-----补
其实html没什么好补充的了,主要是使用css如何构造出各种想要的效果 1.加减框 <!DOCTYPE html> <html lang="en"> < ...
- [转] 你是as3老鸟吗?但是有些你可能目前都不知道的东西
你是as3老鸟吗?如果以下内容对你有莫大的帮助,请顶下! 一:加载swf库中的图片 new 的过程就是图片解压缩的过程.处于 Class 状态时,图片占用的内存和 SWF 文件中这个图片占用的磁盘空间 ...