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;

            }
        }

  

时间: 2024-07-30 16:02:28

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

asp+ffmpeg获取视频的时长

<% '视频数据定义 ffmpeg = "C:\ffmpeg\bin\ffmpeg.exe" video  = "D:\test\ffmpeg\test2\m1080p1.wmv" 'wscript脚本定义 set WshShell = CreateObject("Wscript.Shell") str2 = "cmd.exe /c "&ffmpeg&" -i "&video&

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

所需包为jaudiotagger-2.2.6-SNAPSHOT.jar和jl1.0.1.jar. import java.io.BufferedInputStream; import java.io.File; import java.io.FileInputStream; import org.jaudiotagger.audio.AudioFileIO; import org.jaudiotagger.audio.mp3.MP3AudioHeader; import org.jaudiota

Java使用JAVE获取MP4播放时长

java获取音频文件播放时长

方法一: 在项目开发过程中,需要获取音视频文件时长.查询资料后发现 JAVE能够完美得到想要的结果,JAVE项目简介如下: The JAVE (Java Audio Video Encoder) library is Java wrapper on the ffmpeg project. Developers can take take advantage of JAVE to transcode audio and video files from a format to another. I

java 处理获取视频文件时长

现在所做的项目需要获取视频的时长.因为jdk1.5的api没看到有这个方法.所以在网上找了一下,发现jave这个项目.Encoder这个类有个方法: MulitimediaInfo中有个getDuration() 这便是我要找的答案 试验代码加上 因为返回的为毫秒,实际情况需要转换.

PHP获取音频mp3文件时长或音频文件其它参数属性

今天在开发项目中遇到一个问题,要获取到上传音频的时长,从而展示在前端页面 最后找到解决方案: 1.首先,我们需要先下载一份PHP类-getid3  https://codeload.github.com/JamesHeinrich/getID3/zip/master 2.解压文件,把整个文件夹上传到服务器 3.贴代码 include_once 'getid3/getid3.php'; //引入该文件 $getID3 = new getID3(); //实例化类 $ThisFileInfo = @

【Android端 APP 启动时长获取】启动时长获取方案及具体实施

一.什么是启动时长? 1.启动时长一般包括三种场景,分别是:新装包的首次启动时长,冷启动时长.热启动时长 冷启动 和 热启动 : (1)冷启动:当启动应用时,后台没有该程序的进程,此时启动的话系统会分配一个新的进程给应用. (2)热启动:程序的进程依然存在,启动时通过已有进程启动进入到Activity显示页面的,就是热启动,或者从Android官网来看我们获取到的其实是温启动时长,就是Activity不存在的情况. (3)新装包的启动时长: 新装包的启动时长,预估是最长的,并且在5.0以下及5.

jave 获取音视频文件的大小、以及播放时长

首先引入jave-1.0.2.jar, 写了个demo 仅供参考 package com.readVideo.test; public class VideoName { private int id; private String name; private String time; private String size; private String leaf; private String url; private String brief; private int VIDEO_DETA

js获取video的播放时长

  1 setTimeout(function () { 2 var vid = document.getElementById("videoIntro"); 3 var currentTime=vid.currentTime.toFixed(1); 4 if(currentTime==1.2){ 5 //触发 6 return false; 7 } 8 console.log(currentTime); 9 getvideoprogress(); 10 }, 1000); 11 fu