几种获取音视频播放时间长度的方法( shell32, WMP, ffmpeg )

1 篇文章 0 订阅
1 篇文章 0 订阅

几种获取音视频播放时间长度的方法  ( shell32, WMP, ffmpeg )

1.使用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自己的系统组件,比较方便,获取到的文件属性就是你右键看到的文件属性,不要加载其它工

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

2.使用com组件WindowsMediaPlayer

,缺点同第一种方法一样,觉得WindowsMediaPlayer是不是就是用第一种

方法里的shell32.dll获取文件信息的。

string inputFile="*******";
WMPLib.WindowsMediaPlayer wmPlayer = new WMPLib.WindowsMediaPlayerClass();
wmPlayer.currentPlaylist.clear();
WMPLib.IWMPMediaCollection mediacollection = wmPlayer.mediaCollection;
WMPLib.IWMPMedia media = mediacollection.add(inputFile);
wmPlayer.currentPlaylist.appendItem(media);

//时间长度格式:00:00:00
string duration = media.durationString;

//wmPlayer.Ctlcontrols.currentPosition = sec;
//wmPlayer.Ctlcontrols.play();

3.使用ffmpeg.exe获取文件属性信息,ffmpeg是java开发的用于多媒体文件编辑的命令行工具,有多个版本

,功能比较强大,C#中可以在进程外异步调用这个工具

using (System.Diagnostics.Process pro = new System.Diagnostics.Process())
                    {
                        pro.StartInfo.UseShellExecute = false;
                        pro.StartInfo.ErrorDialog = false;
                        pro.StartInfo.RedirectStandardError = true;

                        pro.StartInfo.FileName = AppDomain.CurrentDomain.BaseDirectory +

"ffmpeg.exe";
                        pro.StartInfo.Arguments = " -i " + fileName;

                        pro.Start();
                        System.IO.StreamReader errorreader = pro.StandardError;
                        pro.WaitForExit(1000);

                        string result = errorreader.ReadToEnd();
                        if (!string.IsNullOrEmpty(result))
                        {
                            result = result.Substring(result.IndexOf("Duration: ") +

("Duration: ").Length, ("00:00:00").Length);
                            duration = result;
                        }

                    }

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值