我正在使用我的应用中的一些音频文件(mp3,wav,.. etc)
我正在使用System.Windows.Media
命名空间中的MediaPlayer类。
但我在计算声音文件的持续时间方面遇到了一些问题,
我的表单实际上是一个小型媒体播放器,它有TrackBar
个ComboBox
和普通的next
,previous
和play
按钮..
我使用此代码来获取声音文件的持续时间,以确定轨迹栏的最大值:
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
是的,然后继续前进。
我该如何解决这个问题? 我怎样才能获得音频文件的持续时间? 它们在一段时间内是什么意思?
任何帮助将不胜感激,谢谢:)
答案 0 :(得分:1)
根据This
您需要等待MediaOpened事件触发,然后NaturalDuration将可用。要检查值是否可用,您可以使用NaturalDuration.HasTimeSpan
属性。
但最好选择使用音频和视频文件是“Fmod.dll”。这有很多权限可以使用音频文件