使用MediaPlayer类获取音频文件的持续时间的问题

时间:2012-08-01 17:28:19

标签: c# winforms media-player duration

我正在使用我的应用中的一些音频文件(mp3,wav,.. etc) 我正在使用System.Windows.Media命名空间中的MediaPlayer类。 但我在计算声音文件的持续时间方面遇到了一些问题, 我的表单实际上是一个小型媒体播放器,它有TrackBarComboBox 和普通的nextpreviousplay按钮.. 我使用此代码来获取声音文件的持续时间,以确定轨迹栏的最大值:

private void MusicComboBox_SelectedIndexChanged(object sender, EventArgs e)
{   
  System.Windows.Duration duration = Player.NaturalDuration;
  SeekBar.Value = 0;
  Player.Open(new Uri(soundEffectPackage.GetMusicAt(MusicComboBox.SelectedIndex)));
  if(duration.HasTimeSpan)
    SeekBar.Maximum = duration.TimeSpan.Seconds;  
}

这只适用于部分文件, 而其他文件没有TimeSpan所以if没有被执行,如果我删除了if,我会得到一个例外,说我应该先检查HasTimeSpan是的,然后继续前进。

我该如何解决这个问题? 我怎样才能获得音频文件的持续时间? 它们在一段时间内是什么意思?

任何帮助将不胜感激,谢谢:)

1 个答案:

答案 0 :(得分:1)

根据This

您需要等待MediaOpened事件触发,然后NaturalDuration将可用。要检查值是否可用,您可以使用NaturalDuration.HasTimeSpan属性。

但最好选择使用音频和视频文件是“Fmod.dll”。这有很多权限可以使用音频文件