有必要显示曲目的时间。事实证明,如果只有 mp3。但播放列表中可能还有其他格式,例如 WAV 和 Vorbis。如何实现类型之间的自动切换以显示两种类型文件中的任何一种的时间。现在我这样做了:
private static void Main(string[] args)
{
try
{
foreach (var file in GetFileInfo())
{
Mp3FileReader reader = new Mp3FileReader(file.FullName);
WaveFileReader s; //??
TimeSpan duration = reader.TotalTime;
Console.WriteLine(duration);
}
}
catch (Exception e)
{
Console.WriteLine(e);
}
Console.ReadKey();
}
public static IList<FileInfo> GetFileInfo()
{
DirectoryInfo directories = new DirectoryInfo("D:\\TestAudio");
var extensions = new string[] { "*.mp3", "*.mp4", "*.wav", "*.wma", "*.ogg", "*.spx" };
var files = extensions.SelectMany(ext => directories.GetFiles(ext, SearchOption.AllDirectories));
return files.ToList();
}
当涉及到 WAV 文件时,它会相应地引发异常。
使用 AudioFileReader:
它应该能够输出所有支持的文件类型的长度(这包括 WAV 和 MP3,但不包括 OGG Vorbis,除非为其安装了编解码器)。