Question

Je suis en train d'écrire un lecteur vidéo de base dans Flash CS5 et Actionscript 3. Pour ce joueur de base, je joins ma NetStream à ma méthode NetConnection, puis appelez .play () du flux pour commencer le chargement. Bien que je veux les métadonnées et pour le flux pour commencer en mémoire tampon, je ne veux pas commencer à jouer la méthode tout de suite, donc j'appelle immédiatement .pause du flux (). Malheureusement, quand je fais une pause immédiatement, n'est pas toujours appelé événement onMetaData de mon flux de client, donc je ne suis pas nécessairement le temps de jeu total de la vidéo chargée.

Pour contourner ce problème, je mets l'appel à la méthode « pause » à l'intérieur de l'auditeur onMetaData, mais parfois ma vidéo aura joué un peu avant de recevoir des métadonnées de, et continuera donc de jouer jusqu'à ce qu'il fait.

Y at-il un bon moyen d'arrêter mon flux de jeu, et toujours obtenir mes métadonnées vidéo?

Était-ce utile?

La solution

D'accord, voici une façon peu soignée de penser différemment ... Ne fixez pas votre objet vidéo sur votre objet flux tout de suite. Commencez votre jeu de flux tout en montrant un « s'il vous plaît attendre » visuelle sans votre objet vidéo affiché. Dans l'écouteur onMetaData, voyez si vous avez enregistré une durée préalablement. Dans le cas contraire, suppose que c'est le premier appel à onMetaData, stocker la durée, la lecture de pause, rechercher le flux à 0, fixez alors l'objet vidéo.

L'utilisateur verra un « s'il vous plaît attendre » pour seulement une seconde, la vidéo apparaîtra, et mis en pause prêt à être joué avec ses temps de durée comme prévu. L'utilisateur sera complètement ignorer que le flux a joué un peu en avant pendant qu'ils attendaient.

Autres conseils

Vous devriez appeler pause lorsque l'événement NetStatusEvent.STATUS NetStream.Play.Start est tiré.

Mise à jour:

Pour les flux très courts (par exemple buffer> duration) NetStream.Play.Start est susceptible d'être viré juste avant le rappel onMetaData.

Avant la pause sur NetStream.Play.Start, vérifier si metaData a été fourni, sinon ne onMetaData pour faire une pause, mais pas de pause droit await (juste définir un indicateur, pauseOnMetaData = true par exemple).

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