你知道netstream.appendBytes()是否存在流媒体问题?

时间:2010-12-21 13:39:22

标签: actionscript-3 streaming netstream

我使用netstream.appendBytes从http获取流媒体(flv),但间歇性地工作(它工作,刷新后,不起作用,然后工作等等......)

有什么问题?,我不知道

我的代码是:

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();

1 个答案:

答案 0 :(得分:1)

可能使用流缓冲区,因为HTTP是TCP,因此并非所有数据包都会在时间到达。