asp.net 获取mp3 播放时长
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 播放时长的更多相关文章
- java获取Mp3播放时长
最近有一个用java获取mp3播放时长的需求,有两种,一种本地文件,一种网络文件,其中获取网络mp3播放时间的方法找了挺久终于找到个能用的了. 第一种很简单,下载个jar包 jaudiotagger ...
- windows server 2008 R2服务器无法通过ShellClass获取mp3音乐时长
我们先看一段代码,获取mp3播放时长: #region GetMediaDetailInfo 获取媒体文件属性信息 /// <summary> /// 获取媒体文件属性信息 /// < ...
- asp.net 获取音视频时长 的方法
http://www.evernote.com/l/AHPMEDnEd65A7ot_DbEP4C47QsPDYLhYdYg/ 日志: 1.第一种方法: 调用:shell32.dll ,win7 ...
- java获取mp3的时长和播放mp3文件
所需包为jaudiotagger-2.2.6-SNAPSHOT.jar和jl1.0.1.jar. import java.io.BufferedInputStream; import java.io. ...
- C#获取mp3文件时长、解决发布到服务器无法使用问题
首先引用COM组件:Microsoft Shell Controls And Automation,需要引用1.2版本的,1.0的会出问题. 这里需要注意DLL的属性Embed Interop Typ ...
- Java使用JAVE获取MP4播放时长
- Java获取音频文件(MP3)的播放时长
最近的一个项目需要按照时间播放mp3文件,例如,播放10分钟的不同音乐. 这就意味着我得事先知道mp3文件的播放时长,以决定播放几遍这个文件. 方案一:Java的方式 找第三方的库,真的感谢这些提供j ...
- C# 获取媒体文件播放时长
引用: Interop.Shell32.dll 方法: /// <summary> /// 获取媒体文件播放时长 /// </summary> /// <param na ...
- java获取音频文件播放时长
方法一: 在项目开发过程中,需要获取音视频文件时长.查询资料后发现 JAVE能够完美得到想要的结果,JAVE项目简介如下: The JAVE (Java Audio Video Encoder) li ...
随机推荐
- Linux mysqladmin 命令
mysqladmin命令可以用来设置或修改 MySQL 密码,常见用法如下: [root@localhost ~]$ mysqladmin -uroot password 'newPass' # 在无 ...
- upper()
upper() 用于把字符串中的小写字母转换成大写字母 In [1]: str = "Hello World" In [2]: str.upper() Out[2]: 'HELLO ...
- mybatis-spring-1.2.1 jar下载、源码下载
http://www.everycoding.com/maven2/org/mybatis/mybatis-spring/1.2.1.html
- Androidの共享登录之方案研究
由于最近公司提到了一个需求是,一个应用登录成功了,另一个自动登录. 绞尽脑汁想了好几天,看起来很容易但是想深点就漏洞百出,有的时候代码都写完了测试都成功了突然发现给一个假设就完全失效. 先前几个同事之 ...
- poj_3067 树状数组
题目大意 左右两个竖排,左边竖排有N个点,从上到下依次标记为1,2,...N; 右边竖排有M个点,从上到下依次标记为1,2....M.现在从K条直线分别连接左边一个点和右边一个点,求这K条直线的交点个 ...
- Sass-学习笔记【进阶篇】
特别说明: 没有sass基础请移步:[Sass-学习笔记[基础篇]]http://www.cnblogs.com/padding1015/articles/7056323.html 最底部附结构图(实 ...
- chkconfig --add失败的处理方法
author: headsen chen datet:2018-08-30 11:57:49 1,在/etc/init.d/下面添加两个文件,并授予 +X 的权限,效果如下: 2,添加到开启自启 ...
- jfinal关联查询给dto添加表结构以外的字段并返回的处理方式
官网栗子: http://www.jfinal.com/doc/5-10 5.10 表关联操作 JFinal ActiveRecord 天然支持表关联操作,并不需要学习新的东西,此为无招胜有招.表关联 ...
- python中的configparser类
Python中有ConfigParser类,可以很方便的从配置文件中读取数据(如DB的配置,路径的配置),所以可以自己写一个函数,实现读取config配置. config文件的写法比较简单,[sect ...
- 【vue】---Object.defineProperty基本使用---【巷子】
1.object.defineProperty 给一个对象定义一个新的属性或者在修改一个对象现有的属性,并返回这个对象 语法: Object.defineProperty(参数1,参数2,参数3) 参 ...