首页 新闻 会员 周边

C#统计视频播放时间

0
[待解决问题]

要求点击按钮后选择一个含有视频的目录,再点击一个按钮计算出该目录下的所有视频格式的单个视频播放时间及总的视频播放时间,求大侠指教

恋人星空的主页 恋人星空 | 菜鸟二级 | 园豆:260
提问于:2014-08-18 16:32
< >
分享
所有回答(3)
0

这还不简单,遍历文件夹,然后用Shell32函数取得视频文件的时间,那就得了。

当然,前提是视频文件要有相应解码器,也就是说文件类型本身已经在系统里注册而且是可以打开的。

XiaoFaye | 园豆:3087 (老鸟四级) | 2014-08-18 16:55

思路我知道,关键是Shell32函数 怎么获取视频播放时长,我电脑上装的迅雷看看播放器,统计mp4视频播放时间没有显示呢

支持(0) 反对(0) 恋人星空 | 园豆:260 (菜鸟二级) | 2014-08-19 09:12

@恋人星空: 

右键看一个文件属性,如果那里有时间,就肯定能取出来,如果那里没有(不排除一些文件有损坏),那肯定也没有了。

支持(0) 反对(0) XiaoFaye | 园豆:3087 (老鸟四级) | 2014-08-19 09:38

@XiaoFaye: 右键视频文件属性能看到播放时间?

支持(0) 反对(0) 恋人星空 | 园豆:260 (菜鸟二级) | 2014-08-19 11:44

@恋人星空: 

在摘要那里呀!!!

支持(0) 反对(0) XiaoFaye | 园豆:3087 (老鸟四级) | 2014-08-19 11:55

@XiaoFaye: 里面是空的

支持(0) 反对(0) 恋人星空 | 园豆:260 (菜鸟二级) | 2014-08-19 12:42

@恋人星

空: 

 

我这里都会有显示的。。。你不会装的GHOST系统吧???

支持(0) 反对(0) XiaoFaye | 园豆:3087 (老鸟四级) | 2014-08-19 13:26

@XiaoFaye: 最终目的是:我看到视频目录下的视频有的能显示出时间,也就是window操作系统他能读出视频的播放时间,但是有的却不能,我是想把那些没有显示出的视频播放时间显示出来

支持(0) 反对(0) 恋人星空 | 园豆:260 (菜鸟二级) | 2014-08-19 13:50

@恋人星空: 

不显示的话有可能是解码器或文件本身的问题,这个就麻烦了,要自己去读文件了。

每种视频文件都有自己格式,某个位置保存的是长度信息,可以试试二进制读出来。比如以下是MP4文件的:http://perso.telecom-paristech.fr/~concolat/MPEGFileFormats.pdf

支持(0) 反对(0) XiaoFaye | 园豆:3087 (老鸟四级) | 2014-08-19 14:14

@XiaoFaye: 无奈了,全英文啊,看不懂

支持(0) 反对(0) 恋人星空 | 园豆:260 (菜鸟二级) | 2014-08-19 14:49
0

楼上正解,附上网上找到的一段代码

使用Windows系统组件Shell32.Shell 程序集路径:C:\WINDOWS\system32\shell32.dll

代码如下:
string path="******";
Shell32.Shell shell = new Shell32.ShellClass();
Shell32.Folder folder = shell.NameSpace(path.Substring(0, path.LastIndexOf("\\")));
Shell32.FolderItem folderitem = folder.ParseName(path.Substring(path.LastIndexOf("\\") + 1));

//时间长度格式:00:00:00
string duration folder.GetDetailsOf(folderitem, 21);

优缺点:
优点是Windows自己的系统组件,比较方便,获取到的文件属性就是你右键看到的文件属性,不要加载其它工

具,没有兼容性等问题,缺点是对于很多格式的文件获取不到文件属性,也就是只能获取支持的文件格式。

iEvent | 园豆:529 (小虾三级) | 2014-08-18 17:36

以前就是这样用的这段代码,没有显示出时间,什么都没显示为啥?

支持(0) 反对(0) 恋人星空 | 园豆:260 (菜鸟二级) | 2014-08-19 09:07
0

搜一下吧,示例有很多的。

Firen | 园豆:5385 (大侠五级) | 2014-08-19 08:56
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册