Flash 如何检测视频缓冲的时间?

Flash 如何检测视频缓冲的时间?,flash,actionscript-3,video,streaming,buffering,Flash,Actionscript 3,Video,Streaming,Buffering,我今天的问题是关于Flash AS3视频缓冲。(流式或渐进式)我希望能够检测到视频何时被缓冲,这样我就可以显示某种动画,让用户知道再等一会儿 当前我的视频将启动,在第1帧上保持3-4秒,然后播放。给人一种视频暂停或中断的印象:( 更新 多亏了我相信我现在面对的方向是正确的。在我看来,工作的关键状态是“NetStream.Buffer.Empty”所以我在那里添加了一些代码,看看这是否会触发我的动画或跟踪语句。还没有运气,但是当缓冲区满时,它会触发我的代码:/Maybe我的视频总是在Buffer

我今天的问题是关于Flash AS3视频缓冲。(流式或渐进式)我希望能够检测到视频何时被缓冲,这样我就可以显示某种动画,让用户知道再等一会儿

当前我的视频将启动,在第1帧上保持3-4秒,然后播放。给人一种视频暂停或中断的印象:(

更新 多亏了我相信我现在面对的方向是正确的。在我看来,工作的关键状态是
“NetStream.Buffer.Empty”
所以我在那里添加了一些代码,看看这是否会触发我的动画或跟踪语句。还没有运气,但是当缓冲区满时,它会触发我的代码:/Maybe我的视频总是在
Buffer.Empty
Buffer.full
之间,这就是为什么我测试
Buffer.Empty的用例时它不会触发任何代码的原因

现行代码
公共函数netStatusHandler(事件:NetStatusEvent):void
{
//处理网络状态事件
开关(事件信息代码)
{
案例“NetStream.Buffer.Empty”:

跟踪(“☼☼☼ 缓冲!);//您使用的是自定义滚动播放器吗?我知道FLVPlayback类有一个内置的


如果您不使用FLVPlayback,NetStream对象在每次启动或停止缓冲时都会触发一个netStatusEvent,其中包括一个事件。您应该能够捕获该事件并使用该事件播放/隐藏动画。

您可以尝试每100毫秒检查一次NetStream的bufferTime和bufferLength,并根据该事件做出决定。NetStream的bufferTime告诉它在播放之前应该缓冲多长时间,bufferLength告诉它在缓冲区中已经有多长时间。
函数onTimerEvent(e:TimerEvent):void{
function onTimerEvent(e:TimerEvent):void {
  var percent:Number = Math.round(ns.bufferLength/ns.bufferTime100 * 100);
  if (percent >= 95 && contains(bufferLoop)) {
    removeChild(bufferLoop);
  }
  if (percent < 25 && !contains(bufferLoop)) {
    addChild(bufferLoop);
  }
}
变量百分比:Number=Math.round(ns.bufferLength/ns.bufferTime100*100); 如果(百分比>=95&&contains(缓冲循环)){ removeChild(bufferLoop); } 如果(百分比<25&!包含(缓冲循环)){ addChild(bufferLoop); }
}

我遇到了这个问题,我想与大家分享一下。Leon在上面提到“NetStream.Buffer.Empty”并没有跟踪任何东西。这是因为你是从本地机器加载FLV的,所以缓冲区从来都不是空的。当你真正在线流媒体时,它会起作用

我所做的只是将我想要的剪辑设置为电影开始播放时可见的“等待缓冲区”,然后使用此代码使其离开并返回。效果非常好

var vidplaying:Boolean = false;

playmovie_btn.addEventListener(MouseEvent.CLICK, playmovie);

function playmovie(event:MouseEvent):void{

    vidplaying = true;
    wait_mc.visible = true;
        (yoru flv and netstream stuff) ect
}

ns.addEventListener(NetStatusEvent.NET_STATUS, netStatus); 

    function netStatus(e:NetStatusEvent) {

        if(vidplaying == true && e.info.code == "NetStream.Buffer.Empty"){
            wait_mc.visible = true;
        }
        if(e.info.code == "NetStream.Buffer.Full"){
            wait_mc.visible = false;
        }
}// netStatus

啊,很酷,谢谢你给我指出了正确的方向:)我现在正试图使用“NetStream.Buffer.Empty”,但我从未从中得到任何跟踪:(两个链接都断了。你的意思是(ns.bufferLength/ns.bufferTime*100)?我仍然没有得到测试跟踪,但仍然在尝试thx!
var vidplaying:Boolean = false;

playmovie_btn.addEventListener(MouseEvent.CLICK, playmovie);

function playmovie(event:MouseEvent):void{

    vidplaying = true;
    wait_mc.visible = true;
        (yoru flv and netstream stuff) ect
}

ns.addEventListener(NetStatusEvent.NET_STATUS, netStatus); 

    function netStatus(e:NetStatusEvent) {

        if(vidplaying == true && e.info.code == "NetStream.Buffer.Empty"){
            wait_mc.visible = true;
        }
        if(e.info.code == "NetStream.Buffer.Full"){
            wait_mc.visible = false;
        }
}// netStatus