我需要找到一种方法来获取 WMA 文件的长度,而不使用任何 Windows Media Player(WMP) dll。我找到了使用 WMP dll 的方法,您可以在此处看到,但由于另一个问题,我宁愿找到一种不必使用 WMP 的方法。
一种使用NAudio并适用于 MP3 的有前途的方法如下所示:
double GetMediaDuration(string MediaFilename)
{
double duration = 0.0;
using (FileStream fs = File.OpenRead(MediaFilename))
{
Mp3Frame frame = Mp3Frame.LoadFromStream(fs);
if (frame != null)
{
_sampleFrequency = (uint)frame.SampleRate;
}
while (frame != null)
{
if (frame.ChannelMode == ChannelMode.Mono)
{
duration += (double)frame.SampleCount * 2.0 / (double)frame.SampleRate;
}
else
{
duration += (double)frame.SampleCount * 4.0 / (double)frame.SampleRate;
}
frame = Mp3Frame.LoadFromStream(fs);
}
}
return duration;
}
有谁知道将其移植到 WMA 文件的方法?
我查看了 WindowsMediaFormat 项目的源代码,但我找不到 WMAFrame 类或任何显然可以让我换掉一个类以使其适用于 WMA 的东西。