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. nth-of-type和nth-child

    一.nth-of-type.nth-child :nth-of-type(n) 选择器匹配属于父元素的特定类型的第 N 个子元素的每个元素. :nth-child(n) 选择器匹配属于其父元素的第 N ...

  2. 洛谷大宁的邀请赛~元旦祭F: U17264 photo(线段树)

    标程的写法稍微有点麻烦,其实不需要平衡树也是可以做的. 线段树上维护从左端点开始最远的有拍照的长度,以及区间的最大值. 考虑两段区间合并的时候,显然左区间必须取,右区间的第一个比左区间最大值大的数开始 ...

  3. 解题:CF983A Finite or not

    题面 一个$b$进制最简分数是有限循环小数当且仅当其分母没有与$b$不同的质因子,小学数奥内容水过 #include<cstdio> #include<cstring> #in ...

  4. 2016-2017 National Taiwan University World Final Team Selection Contest (Codeforces Gym) 部分题解

      D 考虑每个点被删除时其他点对它的贡献,然后发现要求出距离为1~k的点对有多少个. 树分治+FFT.分治时把所有点放一起做一遍FFT,然后减去把每棵子树单独做FFT求出来的值. 复杂度$nlog^ ...

  5. LGP4588[JSOI2018]扫地机器人

    题解 需要先说明一点东西: 1 同一副对角线方向相同,共有$gcd(n,m)$条不同的副对角线,机器人的行为是一个$gcd(n,m)$的循环:: 如果左上方是$(1,1)$,容易看出所有的路径是从左或 ...

  6. 【裴蜀定理】【CF1091C】 New Year and the Sphere Transmission

    Description 有 \(n\) 个人围成一个圈,按照顺时针从 \(1\) 到 \(n\) 编号.第 \(1\) 个人会拿到一个球,他指定一个数字 \(k\),然后会将球传给他后面顺指针数第 \ ...

  7. Linux日常维护命令

    对于程序员来说,掌握一些基本的Linux命令是必不可少的,即使现在用不到,在不久的将来也应该会用到.由于Linux有很多命令,每个命令基本可以用一篇文章介绍,所以本文仅总结一些常用命令的常用用法,如有 ...

  8. ios中iframe的scroll滚动事件替代方法

    在公众号的开发中,遇到ios中iframe的scroll滚动事件失效,在此做下记录. 因为接口获取的数据必须放在iframe中展示,滚动到底部按钮变亮,如图: 代码如下: <!DOCTYPE h ...

  9. Java poi读取,写入Excel2003

    Java poi读取,写入Excel2003 相关阅读:poi读写Excel2007:http://www.cnblogs.com/gavinYang/p/3576741.htmljxl读写excel ...

  10. python 分布式进程体验

    抽了点时间体验了一把python 分布式进程,有点像分布式计算的意思,不过我现在还没有这个需求,先把简单体验的脚本发出来,供路过的各位高手指教 注:需要先下载multiprocessing 的pyth ...