Je travaille actuellement sur un webplayer Flash avec une fonctionnalité de changement de résolution. J'essaie d'utiliser la fonction de changement de résolution de la classe NetStream play2()
dans Actionscript.
Le problème que je rencontre est que les vidéos ne changent pas rapidement. Pour ceux qui connaissent le play2()
fonction, je crois que le joueur effectue une "standard switch"
plutôt qu'un "fast switch."
La documentation indique que lorsque le paramètre de décalage est égal à -1, une commutation rapide se produit. Ce qui se passe réellement, c'est qu'une fois que le paramètre "NetStream.Play.Transition"
est reçu, le joueur attend jusqu'à ce que le moment indiqué par ns.time + ns.bufferLength
a été atteint, avant d'effectuer l'aiguillage.
Je pensais que la commutation rapide effaçait le tampon, mais lors d'une vérification de ns.backbufferlength
j'ai constaté que tout est toujours en cache. Il est également mentionné : "Lorsque le décalage est de -1, le changement se produit à la première image clé disponible après netstream.time + 3
C'est pourquoi je suis confus.
Toute aide ou information à ce sujet serait très appréciée.
Voici un extrait de code décrivant ce qui se passe ( newStream()
est appelé lorsqu'un utilisateur clique pour passer à une nouvelle résolution, style youtube) :
public function newStream(address:String):void
{
var opts:NetStreamPlayOptions = new NetStreamPlayOptions();
opts.streamName = address;
opts.transition = NetStreamPlayTransitions.SWITCH;
opts.offset = -1;
ns.play2(opts);
}
private function nsCallback(event:NetStatusEvent)
{
switch(event.info.code)
{
case "NetStream.Play.Transition":
{
trace("Current time (on Transition): " +
ns.time, "Buffer: " + ns.bufferLength);
var estTime:Number = ns.time + ns.bufferLength;
trace("Estimated Completion Time: " + estTime);
break;
}
}
}