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. c++11 左值引用、右值引用

    c++11 左值引用.右值引用 #define _CRT_SECURE_NO_WARNINGS #include <iostream> #include <string> #i ...

  2. [洛谷P4091][HEOI2016/TJOI2016]求和

    题目大意:给你$n(n\leqslant10^5)$,求:$$\sum\limits_{i=0}^n\sum\limits_{j=0}^i\begin{Bmatrix}i\\j\end{Bmatrix ...

  3. 【BZOJ1046】上升序列(动态规划,贪心)

    [BZOJ1046]上升序列(动态规划,贪心) 题面 BZOJ 洛谷 题解 我一开始看错题了,一度以为是字典序最小的序列. 最后发现它要求的字典序是位置的字典序最小. 那就很好办了. 设\(f[i]\ ...

  4. 【BZOJ1150】数据备份(动态规划,凸优化)

    [BZOJ1150]数据备份(动态规划,凸优化) 题面 BZOJ 洛谷 题解 在不考虑\(K\)的情况下很容易\(dp\) 如果把\(K\)考虑进状态显然是\(O(n^2)\)级别. 所以凸优化一下即 ...

  5. 洛谷P5283 & LOJ3048:[十二省联考2019]异或粽子——题解

    https://www.luogu.org/problemnew/show/P5283 https://loj.ac/problem/3048 小粽是一个喜欢吃粽子的好孩子.今天她在家里自己做起了粽子 ...

  6. activity 与 service 之间的通信

    activity和service通信:通过binder 举个我实际项目中的例子:在service中下载更新应用 首先是下载更新apk的service: public class UpdateVersi ...

  7. 文档比较比对工具Beyond Compare

    Beyond Compare 可以比较文件夹或文件

  8. 题解【51nod 1290 Counting Diff Pairs】

    Description 求区间内有多少对 \((i,j)\) 满足 \(|a_i - a_j| \leq k\) Solution 可以莫队做(万能的莫队) 只需要考虑加入一个数会产生多少贡献即可 离 ...

  9. Linux基础命令之grep

    grep : 根据pattern(模式)搜索文本,并将符合模式的文本行显示出来,并不会修改原文件. 用法: grep  [options]   ‘ pattern ‘  /file       #也可 ...

  10. 科学计算三维可视化---TVTK库可视化实例

    一:TVTK库可视化实例 Plot3D文件知识:PLOT3D 数据格式 PLOT3D文件分为网格文件(XYZ 文件), 空气动力学结果文件 (Q 文件)和通用结果文件(函数文件 + 函数名称文件).网 ...