在c#中获取声音文件长度

时间:2010-11-27 12:14:59

标签: c#

我正在尝试使用此代码获取声音文件的长度:

MediaElement mysound = new MediaElement();
mysound.Source = new Uri(@"D:\majed\Phone\PhoneProject\PhoneProject\Sound\ring1.wav",UriKind.RelativeOrAbsolute);
double length = mysound.NaturalDuration.TimeSpan.Seconds;

但我收到一个异常,上面写着“mysound.NaturalDuration.TimeSpan.Seconds为null”

我该怎么办?

注意:我不想使用(播放)或(开放)方法。

谢谢大家

2 个答案:

答案 0 :(得分:0)

是的确,在Media打开之前,NaturalDuration无效:http://msdn.microsoft.com/en-us/library/system.windows.controls.mediaelement.naturalduration.aspx
我认为没办法这样做。

答案 1 :(得分:0)

根据MSDN

  

NaturalDuration直到不准确   已经提出了MediaOpened事件。

MediaElement继承自System.Windows.UIElement,位于Systems.Windows.Controls 命名空间。按照惯例,在文件打开之前,媒体播放器不知道文件的某些媒体细节是有道理的。如果您所追求的只是歌曲文件的长度,也许您可​​以检查this。当然,它适用于MP3文件,但它可能会让你朝着正确的方向前进。