versiones programar para juegos escena con como comandos codigos cambios botones animate acciones actionscript-3 actionscript flash netstream

actionscript-3 - para - como programar cambios de escena con botones en animate cc



¿Cómo hacer uso de la función play2() para realizar la transmisión rápida de videos? (2)

Actualmente estoy trabajando en un reproductor web Flash con funcionalidad de cambio de resolución. Estoy tratando de hacer uso de la función play2() de la clase NetStream en Actionscript.

El problema al que me estoy enfrentando es que los videos no cambian rápidamente. Para aquellos familiarizados con la función play2() creo que el jugador está realizando un "standard switch" lugar de un "fast switch."

La documentación dice que cuando el parámetro de compensación es -1, se produce un cambio rápido. Sin embargo, lo que realmente sucede es que una vez que se recibe el evento "NetStream.Play.Transition" , el jugador espera hasta que se ns.time + ns.bufferLength el tiempo indicado por ns.time + ns.bufferLength , antes de realizar el cambio.

Pensé que el cambio rápido borró el búfer, pero en un control de ns.backbufferlength , descubrí que todo sigue en la memoria caché. También menciona: "Cuando el desplazamiento es -1, el cambio se produce en el primer fotograma clave disponible después de netstream.time + 3 ", por lo que estoy confundido.

Cualquier ayuda / idea sobre este asunto sería muy apreciada.

Aquí hay un fragmento de código que describe lo que está sucediendo (se llama a newStream() cuando un usuario hace clic para cambiar a una nueva resolución, estilo 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; } } }


Podría ser que el servidor está tratando de encontrar el i-frame más cercano al offset actual y eso lleva tiempo. Si sabes qué es el FPS y el tiempo entre dos i-frames, puedes intentar buscar un tiempo muy cercano al i-frame siguiente o anterior, lo que aceleraría la búsqueda y la publicación.

más información sobre i-frame: http://en.wikipedia.org/wiki/Video_compression_picture_types


Como dice la Documentación : "El valor predeterminado de la compensación es -1, que predetermina el comportamiento de conmutación a estándar. En este modo, el servidor determina un buen punto de transición entre las transmisiones en el tiempo desde el punto donde recibe la llamada al conmutador, y conmuta en ese punto ".

Por lo tanto, debe cambiar el parámetro ''offset'' a un valor superior al tiempo de reproducción actual (Netstream.time). Si el valor es menor, se envía un evento de estado NetStream.Play.Failed.