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