0

我正在我的应用程序中处理一些音频文件(mp3、wav、..etc)我正在使用System.Windows.Media命名空间中的 MediaPlayer 类。但我在计算声音文件的持续时间时遇到了一些问题,我的表单实际上是小型媒体播放器,它有TrackBar一个ComboBox 和正常的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是真的,然后继续。

我怎样才能解决这个问题?如何获取音频文件的持续时间?他们所说的时间跨度是什么意思?

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

4

1 回答 1

1

据此_

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

但处理音频和视频文件的最佳选择是“Fmod.dll”。这有很多权限来处理音频文件

于 2012-08-01T17:52:32.077 回答