2010-06-15 12 views
0

J'ai un MediaElement dont j'ai défini la source sur un nouvel Uri basé sur une chaîne valide.WPF MediaElement Natural Durée

Par exemple:

MediaElementName.Source = new Uri ("string");

La chaîne est un chemin valide, et après le débogage, parfois, il définit la NaturalDuration de « MediaElementName », parfois il ne ..

J'ai été googler pendant au moins 2 heures maintenant avec aucun résultat de travail

Est-ce que quelqu'un ici a une idée de pourquoi parfois il définirait la NaturalDuration, et parfois non? Je suis capable de jouer le wav, mais il n'a aucune idée sur combien de temps le fichier wav est (durée).

Toute aide ou pensée est appréciée, merci !!

-BTG

Répondre

0

En fait, je viens de prendre un pas en arrière et au lieu récupéré les informations à l'aide FileInfo.

FileInfo test = new FileInfo("myFilepath"); 
double size = test.Length; 
1

Je sais c'est bien tooooo tard, mais de toute façon mon expérience a été deux variantes de ce problème

a) Le codec (flac peut être un exemple) ne peut pas savoir la durée. Vérifiez et voyez si Windows Media Player affiche une barre de progression (certains fichiers flac que j'avais en cours de génération par le matériel personnalisé avaient ce problème) Je suppose qu'il n'y avait pas d '"index" dans le fichier. Aussi le format flac donne des résultats différents selon qu'il s'exécute sur un fichier local ou sur http (je suppose que c'est parce que quand il ne peut pas chercher dans un flux il ne peut pas trouver la longueur).

b) Certains codecs ne donnent pas de durée tant qu'ils n'ont pas rendu de matériel. Pour résoudre ce problème, j'ai un minuteur en cours d'exécution qui utilise Player.NaturalDuration.HasTimeSpan et récupère le TimeSpan. Cela prend habituellement une durée de quelques secondes après que le média a commencé à jouer. La vérification de la durée dans Player_MediaOpened ne fonctionne pas de manière fiable.