http://www.evernote.com/l/AHPMEDnEd65A7ot_DbEP4C47QsPDYLhYdYg/

日志:

 
1.第一种方法:
 
调用:shell32.dll ,win7下可以,window2008 r2 服务器上 不行。(原因不知道,有可能是声卡驱动没有安装?)
//添加引用:COM组件的Microsoft Shell Controls And Automation
引用shell32底层接口c:windows\system32\shell32.dll,vs自动转换成interop.shell32.dll(注:64位系统和32位系统生成的interop.shell32.dll不一样) 参考:http://www.stepday.com/topic/?867
 
 
               string file = Request.Form["mp3path" ];
                Shell32. ShellClass sh = new Shell32.ShellClass();
                Folder dir = sh.NameSpace(Path .GetDirectoryName(file));
                FolderItem item = dir.ParseName(Path .GetFileName(file));
                log.Info( "file:" + file);
                string mp3Time = "" ;
                if (Environment .OSVersion.Version.Major >= 6)
                {
                    mp3Time = dir.GetDetailsOf(item, 27);
                }
                else
                {
                    mp3Time = dir.GetDetailsOf(item, 21);
                }
                sb.Append( "文件路径:" + file + "\r\n");
                sb.Append( "<br />");
                sb.Append( "服务器的OSVersion.Version.Major:" + Environment.OSVersion.Version.Major);
                sb.Append( "用Shell32.dll方式测试文件的时长:" + mp3Time);
                sb.Append( "<br />");
 
2.第二种方法:利用:mediainfo.dll:

 
                MediaInfo MI = new MediaInfo();
                MI.Open(file);
                string s = MI.Get(StreamKind .Audio, 0, "Duration");
                string dateTimeStr = Common.TimeHelper .GetDateTimeStr(Convert.ToInt32(s));
                sb.Append( "用mediainfo.dll计算时长:" + dateTimeStr);
 
一样,也是win7下没有问题,服务器上有问题。
 
3, 第三种方法:利用:

                 //用ffmpeg.exe 获取:
                sb.Append( "<br />");
                string fromffmpeg = Fromffmpeg(file);
                sb.Append( "fromffmpeg:" + fromffmpeg);
子方法:
private string Fromffmpeg(string fileName)
        {
            string duration = "" ;
            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;
                        }
                        return duration;
 
                    }
        }
 
 
到此:成功!服务器ok~
 

 

asp.net 获取音视频时长 的方法的更多相关文章

  1. Android获取视频音频的时长的方法

    android当中获取视频音频的时长,我列举了三种. 1:获取视频URI后获取cursor cursor.getLong(cursor.getColumnIndexOrThrow(MediaStore ...

  2. asp.net 获取mp3 播放时长

    1 Shell32 //添加引用:COM组件的Microsoft Shell Controls And Automation //然后引用 using Shell32; //如果出现“无法嵌入互操作类 ...

  3. jave 计算音视频时长

    File source = new File("视频.mp4"); Encoder encoder = new Encoder(); try { MultimediaInfo in ...

  4. 获取音、视频时长(NAudio,Shell32,FFmpeg)

    参考网址:https://blog.csdn.net/u013810234/article/details/57471780 以下为本次测试用到的音.视频格式: audio :”.wav;.mp3;. ...

  5. vue / js使用video获取视频时长

    项目中遇到上传视频功能,需要有预览和获取视频时长功能,因之前使用upload(有需要的话可以参考下我之前的文章),这里就不赘述,直接用来上传视频,不过在上传之前和上传成功后的钩子里,获取不到时长: 没 ...

  6. vue 获取视频时长

    参考资料:js获取上传音视频文件的时长 直接通过element-ui自带的上传组件结合js即可,代码如下: HTML: <el-upload class="upload-demo&qu ...

  7. windows server 2008 R2服务器无法通过ShellClass获取mp3音乐时长

    我们先看一段代码,获取mp3播放时长: #region GetMediaDetailInfo 获取媒体文件属性信息 /// <summary> /// 获取媒体文件属性信息 /// < ...

  8. iOS:Gif动画功能(显示gif动画、获取gif动画时长、获取gif动画执行次数)

    一.简单介绍 gif动画是iOS开发中很常用的一个功能,有的是为了显示加载视频的过程,更多的是为了显示一个结果状态(动画更直观). 那么如何执行gif动画,方法有很多.(这里只写一下方法三,前两种之前 ...

  9. Long类型时间如何转换成视频时长?

    数据库中存放的视频时长是一个Long类型的毫秒/秒时间,现在需要把这个时间转换成标准的视频时长格式,在我看来这应该是一个很常用的转化有一个很常用的转换方法工具才对,可是我百度找了许久,没有一个简单直观 ...

随机推荐

  1. 【BZOJ1455】罗马游戏(左偏树)

    [BZOJ1455]罗马游戏(左偏树) 题面 BZOJ 然而权限题. 题解 左偏树模板题. #include<iostream> #include<cstdio> #inclu ...

  2. Luogu 3810 & BZOJ 3262 陌上花开/三维偏序 | CDQ分治

    Luogu 3810 & BZOJ 3263 陌上花开/三维偏序 | CDQ分治 题面 \(n\)个元素,每个元素有三个值:\(a_i\), \(b_i\) 和 \(c_i\).定义一个元素的 ...

  3. USACO Section 1.5 Superprime Rib 解题报告

    题目 题目描述 超级素数的定义如下:如果有个素数我们从右往左依次去掉一位数,每次去掉一位数剩下的数仍然是素数,那么我们称这个数是超级素数.例如7331,这是一个素数,从右往左依次去掉一位数733, 7 ...

  4. Java之Java程序与虚拟机

    Java为什么要在虚拟机中运行 简单的来说,Java作为一门高级程序语言,语法复杂,抽象度高,不能直接翻译为机器码在机器上运行,所以设计者就设计了虚拟机,通过编译器将Java程序转换成虚拟机所能识别的 ...

  5. Git 常用操作(二)

    第一次传数据:echo "# miya" >> README.mdgit initgit add README.mdgit commit -m "first ...

  6. python之旅:常用模块

    一.time与datetime模块 在Python中,通常有这几种方式来表示时间 时间戳(timestamp):通常来说,时间戳表示的是从1970年1月1号00:00:00开始按照秒计算的偏移量.我们 ...

  7. @Html.DropDownListFor默认选中项

    http://q.cnblogs.com/q/73902/ 项目使用mvc4,给dropDownList指定默认值未选中 页面代码是: 1.未有默认选中值 Html.DropDownListFor(m ...

  8. JAVA 加密算法初探DES&AES

    开发项目中需要将重要数据缓存在本地以便在离线是读取,如果不对数据进行处理,很容易造成损失.所以,我们一般对此类数据进行加密处理.这里,主要介绍两种简单的加密算法:DES&AES. 先简单介绍一 ...

  9. php 中 envoy 的使用方法

    相关文档:中文文档.英文文档 envoy 是什么? envoy 是一个支持 blade 语法的 ssh 远程命令执行的工具.具体来说就是,通过配置 ssh 的账号.密码.key 这些,然后可以使用 e ...

  10. GeoDa计算全局Moran‘I

    GeoDa计算全局Moran‘I 1.导入包含数据的.shp文件 2.创建权重矩阵,点击Weight Manger,再点击Create, weights file ID variable(其中包含的数 ...