Полагаю, вы наконец нашли решение своей проблемы. В любом случае я оставляю ответ для тех, кто прибывает сюда.
Из документации :
Примечания: NaturalDuration не может быть определено до тех пор, пока не произойдет MediaOpened.
Так что вам нужно подождать, пока носитель фактически не откроется:
player.MediaOpened += new EventHandler(player_MediaOpened);
...
private void player_MediaOpened(Object sender, EventArgs e)
{
if (player.NaturalDuration.HasTimeSpan)
{
duration = player.NaturalDuration.TimeSpan;
}
else
{
// Duration is Automatic
}
}