c# asp.netè·åé³é¢æ¶é¿åé³é¢è½¬ç
ç´æ¥ä¸ä»£ç 并è§æ³¨é
/// <summary>
/// å©ç¨ShellClassè·åé³é¢æ件æ¶é¿;
/// å¦ææ·»å å¼ç¨ç¼è¯æ示"ä¸è½å¼ç¨åµå
¥å¼æ¥å£ä¹ç±»çé误",æå¼ç¨å±æ§éçåµå
¥å¼***,设为false;
/// asp.net ç¯å¢ä¸æµè¯æªéè¿,c#æªæµè¯;
/// </summary>
/// <param name="filePath">æ件路å¾</param>
/// <returns></returns>
private int GetDurationByShellClass(string filePath)
{
try
{
ShellClass sh = new ShellClass();
Folder dir = sh.NameSpace(Path.GetDirectoryName(filePath));
FolderItem item = dir.ParseName(Path.GetFileName(filePath));
string str = dir.GetDetailsOf(item, 27); // è·åææ²æ¶é¿ã
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;
return len;
}
else
{
return 0;
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
return 0;
}
/// <summary>
/// å©ç¨WMPLibè·åé³é¢æ件æ¶é¿;
/// å¦ææ·»å å¼ç¨ç¼è¯æ示"ä¸è½å¼ç¨åµå
¥å¼æ¥å£ä¹ç±»çé误",æå¼ç¨å±æ§éçåµå
¥å¼***,设为false;
/// asp.net ç¯å¢ä¸æµè¯æªéè¿,c#æªæµè¯;
/// </summary>
/// <param name="filePath"></param>
/// <returns></returns>
private int GetDurationByWMPLib(string filePath)
{
try
{
WMPLib.WindowsMediaPlayerClass player = new WMPLib.WindowsMediaPlayerClass();
player.URL = filePath;
var duration = Math.Ceiling(player.duration);
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
return 0;
}
/// <summary>
/// å©ç¨MediaInfoDotNetè·åé³é¢æ件æ¶é¿
/// å¦ææ·»å å¼ç¨ç¼è¯æ示"ä¸è½å¼ç¨åµå
¥å¼æ¥å£ä¹ç±»çé误",æå¼ç¨å±æ§éçåµå
¥å¼***,设为false;
/// asp.net ç¯å¢ä¸æµè¯æªéè¿,c#æµè¯éè¿;
/// </summary>
/// <param name="filePath"></param>
/// <returns></returns>
private int GetDurationByMediaInfoDotNet(string filePath)
{
try
{
MediaInfoDotNet.MediaFile aviFile = new MediaInfoDotNet.MediaFile(filePath);
if (aviFile.Audio.Count > 0)
{
var duration = aviFile.General.Duration;
return duration;
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
return 0;
}
[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"
}
/// <summary>
/// å©ç¨ffmpegè·åæå®æ件çæ¶é¿ï¼åä½:ç§;
/// è°ç¨:var duration = GetDurationByffmpeg(filePath, @"/ffmpeg.exe");
/// </summary>
/// <param name="fileName">æ件路å¾</param>
/// <param name="ffmpegVirtualPath">ffmpeg.exeçèæè·¯å¾</param>
/// <returns></returns>
public static int GetDurationByffmpeg(string fileName, string ffmpegVirtualPath)
{
int duration = 0;
try
{
if (!File.Exists(fileName))
{
return 0;
}
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(1 * 1000);
string result = errorreader.ReadToEnd();
if (!string.IsNullOrEmpty(result))
{
result = result.Substring(result.IndexOf("Duration: ") + ("Duration: ").Length,
("00:00:00").Length);
var matchs = Regex.Match(result, @"(\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 = len;
}
return duration;
}
}
catch (Exception ex)
{
log.Error(ex);
}
return 0;
}
/// <summary>
/// å©ç¨ffmpegè¿è¡è½¬ç ; å¦ amr转mp3
/// </summary>
/// <param name="inputFile">è¾å
¥æ件ï¼è¦è½¬ç çæ件</param>
/// <param name="outputFile">转ç åçæ件</param>
/// <param name="ffmpegVirtualPath">ffmpeg.exeçèæè·¯å¾</param>
/// <returns></returns>
public static bool FromffmpegTurnCode(string inputFile, string outputFile, string ffmpegVirtualPath)
{
try
{
if (!File.Exists(inputFile))
{
return false;
}
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 " + inputFile + " -y " + outputFile;
pro.Start();
System.IO.StreamReader errorreader = pro.StandardError;
pro.WaitForExit(30 * 1000);
return true;
}
}
catch (Exception ex)
{
log.Error(ex);
}
return false;
}