现在的位置: 首页 > IT运维 > 正文

Flash实现多个视频片段连续播放

2010年05月03日 IT运维 ⁄ 共 1877字 暂无评论 ⁄ 被围观 3+

有时候,需要按顺序播放多个视频段落,例如www.youku.com、www.56.com、和tv.sohu.com的Flash播放器,针对连续剧、电影播放,均是用多片段连续播放的方式实现的,一般分段大小在12MBytes~20MBytes。
通常的做法是让视频片段一个接着一个播放,在一个视频片段文件播放结束时,等待播放另一个视频片段,此时如果处理不好就会停顿,以下以FLASH CS3(AS 3.0)说明一下。

假设舞台上有一个id是Flvp的FLVplayback对象,第一段代码:

import fl.video.MetadataEvent;
    import fl.video.VideoEvent;

    this.Flvp.skin="key/Skin.swf";
    this.Flvp.volume=0.2;
    Flvp.width=320;
    Flvp.height=256;
    Flvp.x=132.3;
    Flvp.y=56;

现在需要播放视频第一段视频,代码:

this.Flvp.load("/movie/越光宝盒_01.flv");

第一段视频结束后播放第二段视频,代码:

Flvp.addEventListener(fl.video.VideoEvent.COMPLETE,Flvpcomplete);
   function Flvpcomplete(eveObj:fl.video.VideoEvent):void {
        this.Flvp.load("/movie/越光宝盒_02.flv");
        this.Flvp.play();
}

我们测试以上代码,会发现两段视频片段交接时会有较长停顿,那么是否可以在快播放完成前一段视频的时候LOAD第二段视频片段,就好像电影院放电影一样,当一台机播放,另一台机准备,快播放完时准备的机已经启动了?
答案当然是可以的(废话,不然哪来的本文:P),FLVplayback类提供了两个属性activeVideoPlayerIndex和 visibleVideoPlayerIndex
activeVideoPlayerIndex处理LOAD方法,visibleVideoPlayerIndex处理play方法,修改代码,看看结果:

import fl.video.MetadataEvent;
import fl.video.VideoEvent;
this.Flvp.skin="key/Skin.swf";
this.Flvp.volume=0.2;
Flvp.width=320;
Flvp.height=256;
Flvp.x=132.3;
Flvp.y=56;

this.Flvp.load("/movie/越光宝盒_01.flv");
Flvp.addEventListener(fl.video.VideoEvent.COMPLETE,Flvpcomplete);
Flvp.addEventListener(fl.video.MetadataEvent.CUE_POINT,Flvpvuepoint);
//增加AS提示点,利用提示点事件触发LOAD第二段FLV视频
var cuePt:Object = new Object();
cuePt.time = 400;
cuePt.name = "elapsed_time";
cuePt.type = "actionscript";
Flvp.addASCuePoint(cuePt);
function Flvpcomplete(eveObj:fl.video.VideoEvent):void {
this.Flvp.activeVideoPlayerIndex=1;
this.Flvp.visibleVideoPlayerIndex=1;
Flvp.play();
this.Flvp.volume=0.21;
}
function Flvpvuepoint(eveObj:fl.video.MetadataEvent):void {
trace(eveObj.info.name);
this.Flvp.activeVideoPlayerIndex=1;
this.Flvp.source="/movie/越光宝盒_02.flv";
this.Flvp.activeVideoPlayerIndex=0;
}

利用属性activeVideoPlayerIndex和visibleVideoPlayerIndex指定多个FLV播放器,就可实现FLV播放无缝衔接。

给我留言

您必须 [ 登录 ] 才能发表留言!

×
#