2012-06-29 3 views
6

Je télécharge des fichiers m38u sur une chaîne de télévision en direct. J'ai essayé d'ouvrir ces fichiers (car ils sont juste une liste de fichiers avec le type de support "MPEG/TS") et de créer une liste de lecture à partir d'eux. Mais les transitions entre les vidéos sont mauvaises, il fait une pause d'une seconde ou deux avant de commencer la vidéo suivante.Conseils sur la façon de diffuser des fichiers m38u dans une application de style Metro (WinRT)

Cela ne me dérange pas d'écrire du code côté serveur pour résoudre ce problème, mais j'ai besoin de conseils.

Répondre

0

Je ne sais pas comment vous configurez votre liste de lecture, mais je suppose que cela est la façon dont vous faites ceci:

  1. Vous avez un MediaElement
  2. Vous vous abonnez à l'événement MediaElement.MediaEnded
  3. Vous
  4. analyser le fichier m38u et définir le premier flux de la liste à MediaElement.Source.
  5. Vous gérez MediaElement.MediaEnded et chaque fois que vous venez de définir le flux suivant à partir de la liste.

Est-ce vrai? Si oui, alors votre problème est une étape 4. Chaque fois que vous définissez une nouvelle source - MediaElement demande le flux du serveur et tamponne au moins quelque chose pour commencer à montrer la vidéo. Je suppose que c'est la raison pour laquelle vous voyez des transitions de 3 secondes. Voici comment vous devez résoudre ceci:

  1. Vous avez le même MediaElement.
  2. Vous devez implémenter sur votre propre interface IRandomAccessStream, qui peut télécharger un flux en mémoire (si ce n'est pas vraiment énorme) ou sur le disque, ou simplement un flux tampon avec une taille de tampon spécifique.
  3. Vous analysez le fichier m38u, initialisez d'abord votre IRandomAccessStream et le définissez comme source.
  4. Lorsque par exemple la première vidéo sur 90% du temps - vous devez initialiser le second flux de la playlist, commencez à le télécharger avec IRandomAccessStream.
  5. Quand MediaElement.MediaEnded sera tiré - vous aurez flux tamponné, qui est prêt à MediaElement, vous avez juste besoin de mettre en flux de l'étape 4.
+0

J'ai essayé de le faire avec des fichiers locaux, il a donné moi la même performance de transition lente – Ateik

+0

fichiers locaux peuvent parfois être lent aussi. Essayez d'utiliser la mémoire. Si cela ne fonctionne pas, je suppose que vous devrez les combiner sur le serveur pour l'utilisateur. – outcoldman

Questions connexes