1 Shell32

//添加引用:COM组件的Microsoft Shell Controls And Automation
//然后引用 using Shell32;
//如果出现“无法嵌入互操作类型 请改用适用的接口”报错————修改引用里面的shell32属性嵌入互操作类型改为false
public static string GetMP3FileDurationAll(string fileName)
{
ShellClass sh = new ShellClass();
Folder dir = sh.NameSpace(Path.GetDirectoryName(fileName));
FolderItem item = dir.ParseName(Path.GetFileName(fileName));
string str = dir.GetDetailsOf(item, 27); // 获取歌曲时长。
FileOperate.Write_Txt(DateTime.Now.ToString("yyyyMMddHHmmss") + "_GetMP3", DateTime.Now + " \n\r" + str + "\n");
if (str != "")
{
var matchs = Regex.Match(str, @"(\d{2}):(\d{2}):(\d{2})");
var hour = Convert.ToInt32(matchs.Groups[1].Value);
var minute = Convert.ToInt32(matchs.Groups[2].Value);
var second = Convert.ToInt32(matchs.Groups[3].Value); var len = hour * 3600 + minute * 60 + second + "|" + str;
return len;
}
else {
return "";
} }

  2.winmm.dll

[DllImport("Kernel32", CharSet = CharSet.Auto)]
static extern Int32 GetShortPathName(String path, StringBuilder shortPath, Int32 shortPathLength);
[DllImport("winmm.dll")]
public static extern int mciSendString(string m_strCmd, StringBuilder m_strReceive, int m_v1, int m_v2);
public static string MusicTime(string musicFilePath)//musicFilePath是歌曲文件地址
{
if (File.Exists(musicFilePath))//是否存在这个文件
{
//利用MCI命令,返回值为文件时间
StringBuilder shortpath = new StringBuilder(80);
GetShortPathName(musicFilePath, shortpath, shortpath.Capacity);
string musicname = shortpath.ToString();
StringBuilder buf = new StringBuilder(80);
mciSendString("close all", buf, buf.Capacity, 0);
mciSendString("open " + musicname + " alias media", buf, buf.Capacity, 0);
mciSendString("status media length", buf, buf.Capacity, 0);
return buf.ToString().Trim();
double ms = Convert.ToDouble(buf.ToString().Trim());
TimeSpan ts = new TimeSpan(0, 0, 0, 0, (int)ms);
return ts.ToString().Substring(3, 5);//这里你自己去决定返回的是什么格式
}
return "0";//如果文件不存在就返回"0"
}

  3 ffmpeg

public static string Fromffmpeg(string fileName, string ffmpegVirtualPath)
{
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 = System.Web.HttpContext.Current.Server.MapPath(ffmpegVirtualPath);// 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;
var matchs = Regex.Match(duration, @"(\d{2}):(\d{2}):(\d{2})");
var hour = Convert.ToInt32(matchs.Groups[1].Value);
var minute = Convert.ToInt32(matchs.Groups[2].Value);
var second = Convert.ToInt32(matchs.Groups[3].Value); var len = hour * 3600 + minute * 60 + second + "|" + duration;
duration = len;
}
return duration; }
}

  

asp.net 获取mp3 播放时长的更多相关文章

  1. java获取Mp3播放时长

    最近有一个用java获取mp3播放时长的需求,有两种,一种本地文件,一种网络文件,其中获取网络mp3播放时间的方法找了挺久终于找到个能用的了. 第一种很简单,下载个jar包  jaudiotagger ...

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

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

  3. asp.net 获取音视频时长 的方法

    http://www.evernote.com/l/AHPMEDnEd65A7ot_DbEP4C47QsPDYLhYdYg/ 日志:   1.第一种方法:   调用:shell32.dll ,win7 ...

  4. java获取mp3的时长和播放mp3文件

    所需包为jaudiotagger-2.2.6-SNAPSHOT.jar和jl1.0.1.jar. import java.io.BufferedInputStream; import java.io. ...

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

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

  6. Java使用JAVE获取MP4播放时长

  7. Java获取音频文件(MP3)的播放时长

    最近的一个项目需要按照时间播放mp3文件,例如,播放10分钟的不同音乐. 这就意味着我得事先知道mp3文件的播放时长,以决定播放几遍这个文件. 方案一:Java的方式 找第三方的库,真的感谢这些提供j ...

  8. C# 获取媒体文件播放时长

    引用: Interop.Shell32.dll 方法: /// <summary> /// 获取媒体文件播放时长 /// </summary> /// <param na ...

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

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

随机推荐

  1. pow()

    pow() 如果接收两个参数,如 pow(x, y),则结果相当于 x**y,也就是 x 的 y 次方pow() 如果接收三个参数,如 pow(x, y, z),则结果相当于 (x**y) % z,也 ...

  2. jQuery中的$.each的用法

    $.each(Array,function(i,value){ this;  //this指向当前对象 i;       //i表示当前下标 value; //value表示当前元素 })

  3. 搭建FastDFS

    ---恢复内容开始--- FastDFS是用c语言编写的一款开源的分布式文件系统.FastDFS为互联网量身定制,充分考虑了冗余备份.负载均衡.线性扩容等机制,并注重高可用.高性能等指标,使用Fast ...

  4. mysql 安装流程 兼容8.0.0以上版本 解决修改密码规则问题

    背景介绍: 第一次安装mysql服务端,版本8.0.6 遇到了问题:1:不知道流程:2:8.0以上版本密码加密规则修改的解决方案:   1:下载mysql 服务端 https://dev.mysql. ...

  5. 【BZOJ4764】弹飞大爷 LCT

    [BZOJ4764]弹飞大爷 Description 自从WC退役以来,大爷是越来越懒惰了.为了帮助他活动筋骨,也是受到了弹飞绵羊一题的启发,机房的小伙伴们决定齐心合力构造一个下面这样的序列.这个序列 ...

  6. 【BZOJ4515】[Sdoi2016]游戏 树链剖分+线段树

    [BZOJ4515][Sdoi2016]游戏 Description Alice 和 Bob 在玩一个游戏. 游戏在一棵有 n 个点的树上进行.最初,每个点上都只有一个数字,那个数字是 1234567 ...

  7. 6.IIs部署与发布

    A.网站的发布步骤: 1.首先要选择要发布的网站(即项目里的网站)也就是代码. 2.左键选择发布. 3.配置文件:Web.congig. 4.连接:publis method:File System, ...

  8. Oracle 11gR2 RAC监听器原理介绍

    一.基本概念 oracle11gR2 RAC开始引入scan概念,一般通过dns服务器或gns服务器解析scan,也可以使用/etc/hosts文件解析scan,只不过oracle官方不建议这样做,h ...

  9. android 导出数据库文件

    1.打开dos窗口,进入自己SDK路径下,再进入platform-tools下边 2.进入shell模式: adb shell 3.获取所有root权限: su root 4.打开需要导出的数据库文件 ...

  10. [Luogu4331][Baltic2004]数字序列

    原题请见<左偏树的特点及其应用>BY 广东省中山市第一中学 黄源河 luogu 题意 给出序列\(a[1...n]\),要求构造一个不下降序列\(b[1...n]\)使得\(\sum_{i ...