2010-08-02 20 views
2

J'ai écrit une mediastreamsource personnalisée, capable de lire des fichiers multimédias à partir de fichiers source en croissance (flux de transport MPEG). Une fois qu'il atteint la fin de son mediastream, il lit la nouvelle durée à partir du fichier multimédia et continue à délivrer des échantillons. MediaElement joue continuellement.Propriété Custom MediaStreamSource et MediaElement.Naturalduration

Malheureusement, je n'ai trouvé aucun moyen de mettre à jour la propriété MediaElement.NaturalDuration. Par conséquent, je ne peux pas chercher dans la zone "rechargée", car ME ne le sait pas et règle mon changement de position sur sa valeur NaturalDuration.

J'ai essayé d'appeler ReportOpenMediaCompleted après avoir obtenu la nouvelle longueur de flux. Ensuite, Naturalduration est mis à jour, mais je ne peux plus jouer.

Existe-t-il une autre façon de gérer cela?

+0

Salut Puis-je avoir un code source de votre application? Je vraiment curieux de savoir comment pourrait mettre en œuvre ce problème difficile ... parce que j'ai le même problème, mais je ne pouvais pas résoudre :( Je vais donc appriciated si vous me aider. Merci beaucoup –

Répondre

1

Parfois, la vie peut être si facile :-)

Je l'ai résolu en donnant MediaElement une valeur de durée « fantasy » lors de l'initialisation mon MediaStreamSource:

protected override void OpenMediaAsync() 
{ 
... 
mediaSourceAttributes[MediaSourceAttributesKeys.Duration] = TimeSpan.FromHours(10).Ticks.ToString(CultureInfo.InvariantCulture); 
this.ReportOpenMediaCompleted(mediaSourceAttributes, mediaStreamDescriptions); 
} 

La seule chose à faire était de mettre à jour mon curseur avec la "vraie" durée. Maintenant, il fonctionne comme un charme ...

Tilo