Actionscript 3 流媒体FLV视频
我有3个flv视频正在播放。第一个是介绍。然后第二个在介绍结束后播放。第二个视频是循环。一切似乎都很好。但有时当我加载swf时,它会从第二个视频开始。你知道为什么吗Actionscript 3 流媒体FLV视频,actionscript-3,video,flv,Actionscript 3,Video,Flv,我有3个flv视频正在播放。第一个是介绍。然后第二个在介绍结束后播放。第二个视频是循环。一切似乎都很好。但有时当我加载swf时,它会从第二个视频开始。你知道为什么吗 import flash.events.MouseEvent var nc:NetConnection = new NetConnection(); nc.connect(null); var ns:NetStream = new NetStream(nc); loader.vid.Video_1.attachNetStream(
import flash.events.MouseEvent
var nc:NetConnection = new NetConnection();
nc.connect(null);
var ns:NetStream = new NetStream(nc);
loader.vid.Video_1.attachNetStream(ns);
var listener:Object = new Object();
listener.onMetaData = function(evt:Object):void {};
ns.client = listener;
ns.play("video_1.flv");
ns.addEventListener(NetStatusEvent.NET_STATUS, NCListener);
function NCListener(e:NetStatusEvent){
if (e.info.code == "NetStream.Buffer.Empty") {
ns.play("video_2.flv");
}
};
loader.button_01.addEventListener(MouseEvent.CLICK, play_video_01);
loader.button_01.addEventListener(MouseEvent.ROLL_OVER, play_effect_01);
function play_video_01 (event:Event):void{
ns.play("video_3.flv");
loader.button_01_mc.gotoAndPlay (21);
}
function play_effect_01 (event:Event):void{
loader.button_01_mc.gotoAndPlay (2);
}
在代码中,第二个视频的播放由消息
NetStream.Buffer.Empty
触发。由于多种原因,以及视频播放结束时,可以发送该消息。例如,在流式处理时(我知道您没有这样做),NetStream.Buffer.Empty
可以在出现网络问题时被调度。这肯定是问题的原因,但不清楚为什么有时会立即发送缓冲区空消息
我要做的第一件事是修改您的NetStatusEvent
侦听器,以便它跟踪正在调度的所有消息。这样,您可以看到发生此问题时发生的事件序列
其次,您应该尝试使用另一条消息来触发第二个视频的播放。我不是100%确定,但我认为消息NetStream.Play.Stop
是您想要的(当到达视频结束时,以及当您以编程方式停止播放时,会发送该消息)。您从NetStatusEvent
获取的消息的完整列表如下所示
结合这两种建议,您的NetStatusEvent
处理程序可能如下所示:
function NCListener(e:NetStatusEvent)
{
var code:String = e.info.code;
trace("code: ", code);
if (code == "NetStream.Record.Stop"
ns.play("video_2.flv");
}
最后,您可能希望将其他事件侦听器添加到NetStream
。它发送一个IOErrorEvent
和AsyncErrorEvent
。。。当问题发生时,您可能会得到其中一个