Wie loop-video mit NetStream-in-Daten-Generierung-Modus
Ich bin mit einem NetStream-in-Daten-Generierung-Modus zu spielen, eine eingebettete FLV-Verwendung von appendBytes. Wenn der stream abgespielt wurde, möchte ich Schleife die FLV-Datei. Ich bin mir nicht sicher, wie Sie diese erreichen. Hier ist was ich habe, so weit (dies ist kein vollständiges Beispiel):
public function createBorderAnimation():void
{
//Load the skin image
borderAnimation = Assets.BorderAnimation;
//Convert the animation to a byte array
borderAnimationBytes = new borderAnimation();
//Initialize the net connection
border_nc = new NetConnection();
border_nc.connect( null );
//Initialize the net stream
border_ns = new NetStream( border_nc );
border_ns.client = { onMetaData:function( obj:Object ):void{ trace(obj); } }
border_ns.addEventListener( NetStatusEvent.NET_STATUS, border_netStatusHandler );
border_ns.play( null );
border_ns.appendBytes( borderAnimationBytes );
//Initialize the animation
border_vd = new Video( 1024, 768 );
border_vd.attachNetStream( border_ns );
//Add the animation to the stage
ui = new UIComponent();
ui.addChild( DisplayObject( border_vd ) );
grpBackground.addElement( ui );
}
protected function border_netStatusHandler( event:NetStatusEvent ):void
{
if( event.info.code == "NetStream.Buffer.Flush" || event.info.code == "NetStream.Buffer.Empty" )
{
border_ns.appendBytesAction( NetStreamAppendBytesAction.RESET_BEGIN );
border_ns.appendBytes( borderAnimationBytes );
border_ns.appendBytesAction( NetStreamAppendBytesAction.END_SEQUENCE );
}
}
Dieser Schleife wird die animation, aber es beginnt zu kauen Speicher wie verrückt. Ich habe versucht, mithilfe von NetStream.seek(0) und NetStream.appendBytesAction( NetStreamAppendBytesAction.RESET_SEEK ), aber dann bin ich nicht sicher, was als Nächstes zu tun ist. Wenn Sie nur versuchen, zu nennen appendBytes wieder nach, dass es nicht funktioniert, vermutlich weil ich anfügen das vollständige byte-array, welches die FLV-header und dem ganzen Zeug. Ich bin nicht sehr vertraut mit, wie das alles funktioniert.
Jede Hilfe wird sehr geschätzt.
Du musst angemeldet sein, um einen Kommentar abzugeben.
[Bearbeiten]
Zunächst sah ich nicht ein Speicher problem mit Ihrem code. Jedoch, die Beispiel-app war ich mit (unten) nur wartet, für die
NetStream.Buffer.Empty
Nachricht von derNetStatusEvent
. Es hört nicht zu, für dieNetStream.Buffer.Flush
Nachricht. Ich habe nur versucht, das hören sowohl, wie in Ihrem Beispiel, und die app geht drunter und drüber 🙂Den code unten zeigt, wie
seek(0)
starten Sie die Wiedergabe mitappendBytes()
. Zu machen, dass die Arbeit, müssen Sie warten, bisNetStream.Seek.Notify
von derNetStatusEvent
, dann fügen Sie die bytes.Ich auch neu gestartet-Wiedergabe ohne Verwendung
seek(0)
(die auskommentierte Zeile), und die Speicherauslastung war in Ordnung.Ich bin mit Mac OS X und gemessene Speicher mit der
top
Befehl und Activity Monitor. Activity Monitor ist der virtuelle Speicher stats schwankte erheblich, aber nichts, wie ein Speicher-Leck.