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. installns

    installns 将升级文件NSVPX-NCore_build-12.1-48.13_nc_64.tgz,上传至设备的“/var/nsinstall”目录下. 在命令行中执行以下命令,查看升级脚本使 ...

  2. Moonraker:1靶机入侵

      0x01 前言 攻击Moonraker系统并且找出存在最大的威胁漏洞,通过最大威胁漏洞攻击目标靶机系统并进行提权获取系统中root目录下的flag信息. Moonraker: 1镜像下载地址: h ...

  3. 设置debian6源

    debian6真的太老了,个人喜欢追新,因为新版本用起来少很多乱七八糟的问题,不过线上有机器跑的这个版本,SO... 1.修改源文件,注释掉不可用的源,添加可用的源 # vim /etc/apt/so ...

  4. bzoj3533【Sdoi2014】向量集

    题目描述 维护一个向量集合,在线支持以下操作:"A x y (|x|,|y| < =10^8)":加入向量(x,y);" Q x y l r (|x|,|y| &l ...

  5. Lnmp上安装Yaf学习(二)

    上一节主要实践了在Lnmp上安装Yaf扩展,那么这一节将测试 Yaf 的一个简单demo的运行. 一.通过Lnmp 创建 vhost 文件 [root@localhost yaf-3.0.6]# ln ...

  6. Python完成RF测试用例

    Robot Framework 框架是基于 Python 语言开发的,所以,它本质上是 Python 的一个库. from robot.api import TestSuite from robot. ...

  7. 由支付宝当面付引发的NatApp方便调试回调

    http://blog.csdn.net/xunxianren007/article/details/54954520 这篇文章写的很好,很详细. 回调理解: 所谓回调:就是A类中调用B类中的某个方法 ...

  8. bashttpd使用手册

    http://note.youdao.com/noteshare?id=15775dca9fcdc7326e80158082572ed5

  9. node中异步IO的理解

    解释性语言和编译型语言的区别: 计算器不能直接的理解高级语言,只能理解机器语言,所以必须把高级语言翻译为机器语言,翻译的方式有两种,一个是编译,一个是解释. 解释性语言的程序不需要编译,它是在运行程序 ...

  10. Java入门:使用Java API

    什么是Java类库 在编写程序的时候,通常有很多功能是通用的,或者是很基础的,可以用这些功能来组成更发杂的功能代码.比如文件操作,不同程序对文件的操作基本都是一样的,打开文件,关闭文件,读取文件里面的 ...