Frage

Ich benutze netstream.appendBytes das Streaming (FLV) von http zu bekommen, sondern arbeitet mit Unterbrechungen (es funktioniert, nach refresh, nicht funktioniert, dann funktioniert es und so weiter ...)

Was ist das Problem ?, Ich habe keine Ahnung,

Mein Code ist:

import flash.display.*;
import flash.events.*
import flash.net.*;

import flash.utils.ByteArray;
import com.hurlant.util.Hex;

var videoURL:String = "http://url/vivo/flash";

//elemento de conexíon
var conn:NetConnection = new NetConnection();
conn.connect(null);
//stream de red
var stream:NetStream;
//conexión
stream = new NetStream(conn);
//oyente
stream.addEventListener(AsyncErrorEvent.ASYNC_ERROR, asyncErrorHandler);



function Play()
{
    var urlStream:URLStream = new URLStream();
    //oyentes de URLStream
    urlStream.addEventListener(StatusEvent.STATUS, inStatus); 
    urlStream.addEventListener(Event.COMPLETE, completeHandler);
    urlStream.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);    

    urlStream.addEventListener(ProgressEvent.PROGRESS, oyenteProcesoCarga);
    //urlStream.addEventListener(ProgressEvent.PROGRESS, describeProcesoCarga);

    urlStream.addEventListener(IOErrorEvent.IO_ERROR, ioError);
    //Video
    var video:Video = new Video(640,480);
    video.attachNetStream(stream);
    addChild(video);

    stream.play(null);

    urlStream.load(new URLRequest(videoURL));
}

function ioError(event:IOErrorEvent):void
{
    textArea.text += event + "\n";
}

function oyenteProcesoCarga(event:ProgressEvent):void
{
    var encr:ByteArray = new ByteArray();
        event.target.readBytes(encr);
        stream.appendBytes(encr);
}

function describeProcesoCarga(event:ProgressEvent):void
{
    if (event.target.bytesAvailable > 0){
        var encr:ByteArray = new ByteArray();
        event.target.readBytes(encr);
    }
}


function securityErrorHandler(event:SecurityErrorEvent):void {
}

function asyncErrorHandler(event:AsyncErrorEvent):void {
// ignore AsyncErrorEvent events.
}
function completeHandler(event:Event):void {
}

function inStatus(event:StatusEvent):void { 
} 

Play();
War es hilfreich?

Lösung

Vielleicht einen Strompuffer verwenden, wie HTTP TCP ist so nicht alle Pakete zum Zeitpunkt ankommen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top