前言:

上传音频文件,自动写入此音频文件的时长,这里用 COM组件Microsoft Shell Controls And Automation来实现。

首先

1、引用:Microsoft Shell Controls And Automation

注意:这里是1.0版本的,有的使用的是1.2版本的,如果1.0的有问题,请换成1.2的

2、代码如下

                string strFileName = FileHelper.MapPath(linkUrl);//linkUrl是上传到服务器的路径
string dirName = System.IO.Path.GetDirectoryName(strFileName);
string SongName = System.IO.Path.GetFileName(strFileName);//获得名称
FileInfo fInfo = new FileInfo(strFileName);
Shell32.ShellClass sh = new Shell32.ShellClass();
Shell32.Folder dir = sh.NameSpace(dirName);
Shell32.FolderItem item = dir.ParseName(SongName);
string strTime = System.Text.RegularExpressions.Regex.Match(dir.GetDetailsOf(item, -), "\\d:\\d{2}:\\d{2}").Value; //时长
duration = Convert.ToInt64(TimeSpan.Parse(strTime).TotalSeconds); //音频的时常,单位秒
size = fInfo.Length;//字节数(这个是获取文件大小,单位是Byte)

上面这段代码在本地测试的时候是完全能够读到的

但是发布在服务器上的时候,下面句代码会报错,原因是GetDetailsOf(item, -1)方法获取不到任何信息

 string strTime = System.Text.RegularExpressions.Regex.Match(dir.GetDetailsOf(item, -), "\\d:\\d{2}:\\d{2}").Value;  //时长

于是去服务器查看了文件的详细信息,如下图所示,并没有时长信息。

所以这个是由操作系统导致的GetDetailsOf(,)获取不到音频文件时长的问题。

3、解决方法:

这个问题主要是服务器没有安装关于音频的功能,添加上功能即可。

注意:安装这两个功能后服务器会被要求重启才能生效

Shell32.ShellClass服务器操作系统无法获取 音频文件时长问题的更多相关文章

  1. java 获取音频文件时长

    需要导入jar包:jave 1.0.2 jar 如果是maven项目,在pom.xml文件中添加: <dependency> <groupId>it.sauronsoftwar ...

  2. C#中获取音频文件时长

    1.在项目中添加引入:COM组件的Microsoft Shell Controls And Automation 2.在引用中找到Shell32,点击右键,在属性中将“嵌入互操作类型”的值改为“fal ...

  3. C#获取mp3文件时长、解决发布到服务器无法使用问题

    首先引用COM组件:Microsoft Shell Controls And Automation,需要引用1.2版本的,1.0的会出问题. 这里需要注意DLL的属性Embed Interop Typ ...

  4. [原]通过配合ffmpeg.exe获取视频文件时长

    import subprocess import os import time def getTime(flvpath,fid): #file_str = '1.flv' file_str = flv ...

  5. 使用NaturalDuration获取音频的时长

    #region customizeTime ) sec = " + mediaElement.Position.Seconds.ToString(); else sec = mediaEle ...

  6. java获取音频文件播放时长

    方法一: 在项目开发过程中,需要获取音视频文件时长.查询资料后发现 JAVE能够完美得到想要的结果,JAVE项目简介如下: The JAVE (Java Audio Video Encoder) li ...

  7. 以springMVC为例获取上传视频文件时长

    毕设项目是一个在线学习系统,教师用户有上传视频的功能,在答辩之前赶了一个demo出来,好多功能都写死了,比如课程学习进度就是被我写死在前端的一个变量,最近导师要我把项目打包发给他,这才心慌慌赶紧把这些 ...

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

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

  9. Python3.6_x86通过FFpmeg获取视频或音频的时长和分辨率

    前言 前段时间公司在做流媒体服务,与许多厂家合作拿了许多视频过来,现在要对这些视频文件进行整理,通过特殊的编码排列,获取他们的时长以及分辨率,这里我遇到一个大坑,请往下面看. # -*- coding ...

随机推荐

  1. LOJ2611. NOIP2013 积木大赛 【线段树】

    LOJ2611. NOIP2013 积木大赛 LINK 题目大意是给你一个目标状态数组 每次你可以选择一个连续区间加上一个值,求最小操作次数 我是神奇的脑子 最近做数据结构疯了 然后看见这题就数据结构 ...

  2. WPF 绘制对齐像素的清晰显示的线条

    此前有小伙伴询问我为何他 1 像素的线条显示发虚,然后我告诉他是“像素对齐”的问题,然而他设置了各种对齐像素的属性依旧没有作用.于是我对此进行了一系列试验,对 WPF 像素对齐的各种方法进行了一次总结 ...

  3. LG1429 平面最近点对(加强版)

    题意 给定平面上n个点,找出其中的一对点的距离,使得在这n个点的所有点对中,该距离为所有点对中最小的 2≤n≤200000 分析 参照3A17K的题解. 我们充分发扬人类智慧: 将所有点全部绕原点旋转 ...

  4. C#机器学习插件 ---- AForge.NET

    目录 简介 主要架构 特点 学习之旅 简介 AForge.NET是一个专门为开发者和研究者基于C#框架设计的,这个框架提供了不同的类库和关于类库的资源,还有很多应用程序例子,包括计算机视觉与人工智能, ...

  5. Python 函数 -hasattr()

    hasattr(object, name)hasattr() 函数用于判断对象是否包含对应的属性.如果对象有该属性返回 True,否则返回 False.object -- 对象.name -- 字符串 ...

  6. [LeetCode系列]有序链表转换为平衡BST的递归解法

    给定有序链表(元素由小到大), 试问如何将其转换为一个平衡BST? 平衡BST: 任意节点的左右子树的深度差值不大于1. 主要思想是用递归. Trick是使用快慢指针来获取中间节点. 获得中间节点后, ...

  7. linux网络设备理解

    网络层次 linux网络设备驱动与字符设备和块设备有很大的不同. 1. 字符设备和块设备对应/dev下的一个设备文件.而网络设备不存在这样的设备文件.网络设备使用套接字socket访问,虽然也使用re ...

  8. SharePoint中使用Visio Service展示业务数据

    SharePoint中可以通过Visio Service可以在浏览器中查看Visio图,功能部署到系统中,一切安好. 而现实总是很折磨人,使用该功能后,相关使用者随后提出,Visio图能否与我的业务数 ...

  9. 【SQLYOG】SSH ERROR:UNABLE TO OPEN CONNECTION:GETHOSTBYNAME:UNKNOWN ERROR牵引出来的一系列问题

    出现这个问题很蹊跷,SQLyog管理过一二十台的mysql服务器或者vps,连接一直没有问题,各种服务商的都没问题,也包括阿里云的.可昨天偏偏一台阿里云的服务器本地通过SQLyog去连接它的时候报这样 ...

  10. 2DAY初识python

    一.变量 1 什么是变量之声明变量 #变量名=变量值 age=18 gender1='male' gender2='female' 2 为什么要有变量 变量作用:“变”=>变化,“量”=> ...