如何取得视频(MP4)文件的时长 如题,谢谢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 由于需要用到实时读取影音文件(mp3、wma、wmv …)播放时间长度的功能,搜索到的结果有: (1) 硬编码分析影音文件,需要分析各种媒体格式,代价最大; (2) 使用wmlib sdk,需要熟悉sdk各个接口,且不同版本的wm接口有别,代价次之; (3) 使用系统shell32的com接口,直接访问媒体文体属性,取其特定内容,代价最小。 显然第3种方案见效最快,立即操刀: ① 引用shell32底层接口c:windowssystem32shell32.dll,vs自动转换成interop.shell32.dll(注:64位系统和32位系统生成的interop.shell32.dll不一样) ② 编码读取播放时间长度: /// <summary> /// 获取媒体播放时间长度,格式00:00:00。 /// </summary> /// <param name="path">媒体路径</param> /// <returns>播放时间长度</returns> public static string getmediaduration(this string path) { try { 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)); return folder.getdetailsof(folderitem, 21); } catch (exception ex) { ex.error(); return null; } } ③ 调用结果,在win2003上应使用folder.getdetailsof(folderitem, 21) ,而在vista上应使用folder.getdetailsof(folderitem, 27) ,主要是因为不同系统下文件属性索引顺序不同造成。只要右键单击文件属性,能看到的媒体属性都能取到,可以换不同的索引值来取。如下所示,取出的时间长度是 00:03:52,目标完成。 偶记得FFMEPG中有相应方法的,mencoder也行,关注过一段时间,没太深入。 谢谢,不过针对的是F4V(MPEG4)格式的。SHELL无法读取的到 自动设置宽度datagridview http头文件问题 一个从网页中swf文件读取链接的问题 QQ空间 开发价格 特急!!!!在线求教 C#调用delphi制作的dll(非标准COM库) 如何取得异常,在线等!!!!!!!!!!!!!! replace怎么没起作用阿 这个错误是怎么引起的~~~ 局域网内知道IP可以知道其MAC地址吗? C# 窗体中的控件莫名其妙的就变透明了,求解决办法! 字符串 和 SqlParameter 查询效率问题,比较难解决的问题。 如何用WPF或者Winform编写一个程序直接读取QQ群的群聊记录
/// <summary>
/// 获取媒体播放时间长度,格式00:00:00。
/// </summary>
/// <param name="path">媒体路径</param>
/// <returns>播放时间长度</returns>
public static string getmediaduration(this string path)
{
try
{
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));
return folder.getdetailsof(folderitem, 21);
}
catch (exception ex)
{
ex.error();
return null;
}
} ③ 调用结果,在win2003上应使用folder.getdetailsof(folderitem, 21) ,而在vista上应使用folder.getdetailsof(folderitem, 27) ,主要是因为不同系统下文件属性索引顺序不同造成。只要右键单击文件属性,能看到的媒体属性都能取到,可以换不同的索引值来取。如下所示,取出的时间长度是 00:03:52,目标完成。