代码如下,功能为,获取音乐文件的播放总时长。
string file = @"C:\我的音乐.mp3" ;
ShellClass sh = new ShellClass();
Folder dir = sh.NameSpace(Path.GetDirectoryName(file));
FolderItem item = dir.ParseName(Path.GetFileName(file));
string str = dir.GetDetailsOf(item, 27) ; // 获取歌曲时长。
MessageBox.Show(str);
/ 如果执行过程中,出现是错误提示,通过 Shell32 的 Embed Interop Types 属性设置为 False 即可;
知识拓展:C# 获得AMR音乐文件的时间
private long GetAMRFileDuration(string fileName)
{
long duration = 0;
FileStream fs = new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
{
byte[] packed_size = new byte[16] { 12, 13, 15, 17, 19, 20, 26, 31, 5, 0, 0, 0, 0, 0, 0, 0 };
int pos = 0;
pos += 6;
long lenth = fs.Length;
byte[] toc = new byte[1];
int framecount = 0;
byte ft;
while (pos < lenth)
{
fs.Seek(pos, SeekOrigin.Begin);
if (1 != fs.Read(toc, 0, 1))
{
duration = lenth > 0 ? ((lenth - 6) / 650) : 0;
fs.Close();
break;
}
ft = (byte)((toc[0] / 8) & 0x0F);
pos += packed_size[ft] + 1;
framecount++;
}
duration = framecount * 20 / 1000;
}
fs.Close();
return duration;
}