Проблем с получаването на продължителността на аудио файл с помощта на класа MediaPlayer

Работя с някои аудио файлове в приложението си (mp3, wav, ..и т.н.) Използвах класа MediaPlayer от пространството на имената System.Windows.Media.. но имах някои проблеми с изчисляването на продължителността на звуковия файл, моята форма всъщност е малък медиен плейър, той има TrackBar a 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 е вярно, тогава продължаваме напред.

Как мога да поправя това? Как мога да получа продължителността на аудио файла? И какво имат предвид под времеви интервал?

Всяка помощ ще бъде оценена, благодаря :)


person vexe    schedule 01.08.2012    source източник


Отговори (1)


Според Това

Трябва да изчакате събитието MediaOpened да се задейства, NaturalDuration ще бъде достъпно след това. За да проверите дали стойността е налична, можете да използвате свойството NaturalDuration.HasTimeSpan.

но най-добрият избор за работа с аудио и видео файл е "Fmod.dll". това има много привилегии за работа с аудио файл

person KF2    schedule 01.08.2012
comment
добре дошъл, вече използвах fmod dll, има много опции и е много интересно да се работи с аудио и видео файл, ако имате проблем, ще ви помогна. - person KF2; 01.08.2012