Я знаю, что это слишком поздно, но в любом случае, по моему опыту, было два варианта этой проблемы
a) Кодек (например, flac) не может определить длительность.Проверьте и посмотрите, отображает ли проигрыватель Windows Media индикатор выполнения (у некоторых файлов flac, которые были сгенерированы на нестандартном оборудовании, была эта проблема). Я подозреваю, что в файле не было «индекса».Кроме того, формат flac дает разные результаты в зависимости от того, выполняется ли он в локальном файле или по протоколу http (я подозреваю, что это потому, что когда он не может искать в потоке, он не может найти длину).
b) Некоторые кодеки не дают длительности, пока они не представили некоторый материал, для решения этой проблемы у меня работает таймер, который использует Player.NaturalDuration.HasTimeSpan, а затем получает TimeSpan.Обычно это происходит в течение нескольких секунд после начала воспроизведения.Проверка временного интервала в Player_MediaOpened не работает надежно.