Question

Je rencontre un comportement étrange pour lequel je ne trouve pas documenté connaissances.

Voici ce qui se passe:

Après avoir appelé la méthode play (), un netstream met en pause lorsque le code NetStatus est "NetStream.Play.Start". Cela désactive le comportement par défaut de automatiquement en jouant. Avant de reprendre avec soit togglePause () ou CV (), effectuer une recherche opération. Lorsque vous essayez de reprendre avec togglePause () ou reprendre (), la Netstream ne démarre pas à jouer.

Si vous venez immédiatement une pause () puis reprendre () sans chercher () entre les deux, il reprend bien.

En outre, si vous retardez la pause initiale d'environ 250ms, vous pouvez rechercher () et puis reprendre () sans problème.

J'ai posté ici une démo et source: http://drinkspiller.cannonballinteractive.com/temp/ResumeAfterPauseAndSeek/

Le code est le code d'exemple directement à partir des documents pour AS3 NetStream avec mineure ajouts pour gérer la pause initiale et gérer les touches rechercher et reprendre. Il n'y a pas grand-chose à lui.

Notez que je suis mise en pause en appelant stream.seek (0) puis stream.pause (); Cette assure le montre le premier cadre de l'instance vidéo au lieu de rien. Le même problème se produit sans stream.seek (0) et uniquement à l'aide stream.pause () pour arrêter la lecture.

J'ai aussi essayé de retarder l'appel à startPaused (); jusqu'à ce que l'événement plein tampon code, mais le comportement est le même.

Quelqu'un peut-il me aider à trouver une solution raisonnable ou me confirmer que c'est un punaise? Un grand merci!

Était-ce utile?

La solution

Il y a certainement quelques bugs en jeu (et une mauvaise documentation). Mais, je pense qu'il ya deux problèmes potentiels avec votre échantillon:

  1. Je ne pense pas que ce soit une bonne idée d'appeler NetStream.seek avant de recevoir des métadonnées sur le fichier FLV. (Considérer que la durée est extrait à partir des métadonnées). Je ne sais pas s'il y a des documents officiels à ce sujet, mais je l'ai trouvé de l'expérience, il peut être problématique. Vous pouvez essayer de mettre une pause / rechercher des événements dans le gestionnaire d'événements onMetaData.

    Ma compréhension limitée est que les métadonnées sont inclus en ligne avec les données FLV. Il peut être partout, mais idéalement et en général, il est à l'avant du fichier. Ainsi, lors du téléchargement progressif, NetStream doit recevoir suffisamment d'informations pour obtenir les métadonnées dont il a besoin de faire des choses plus avancées avec la vidéo (comme la recherche). Cela pourrait expliquer pourquoi il a travaillé pour vous lors de la mise en pause 250ms.

  2. Votre échantillon FLV est codé différemment des autres FLVs J'ai travaillé avec. Je ne sais pas exactement pourquoi, mais si je changeais pour faire référence à un autre FLV, tout fonctionnait très bien (après le numéro # 1 a été traitée qui est.)

    Je pensais que peut-être votre FLV échantillon a été tout simplement manquant, les images clés qui sont nécessaires pour la recherche. J'ai essayé réencodage d'inclure des images clés et il ne fonctionne toujours pas bien. Je ne suis pas vraiment sûr de ce qui est différent à ce sujet FLV, et si quelqu'un peut le signaler, je trouve très utile aussi.

En ce qui concerne l'aide d'un seek (0) appeler pour vous assurer qu'il ya un cadre d'affiche ... Je ne l'ai pas eu à le faire moi-même. Cela pourrait aussi être lié à la façon dont sont codés FLVs bien.

Autres conseils

Si vous faites un netstream.seek (0); il appelle votre gestionnaire de métadonnées à nouveau.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top