·您当前的位置:首页 > 技术教程 >

[AS3]FLVplayback处理多个flv视频无缝连播

时间:2012-01-03 15:59flash8.net
需要按顺序播放多个FLV视频段落,一个接着一个播放,在一个FLV文件播放结束时,等待播放另一个FLV文件,此时如果处理不好就会停顿,以下以FLASH CS3(AS 3.0)说明一下

    有时候,需要按顺序播放多个FLV视频段落,一个接着一个播放,在一个FLV文件播放结束时,等待播放另一个FLV文件,此时如果处理不好就会停顿,以下以FLASH CS3(AS 3.0)说明一下。

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

  1. import fl.video.MetadataEvent;  
  2. import fl.video.VideoEvent;  
  3. this.Flvp.skin="key/SkinUnderPlayStopSeekMuteVol.swf";  
  4. this.Flvp.volume=0.2;  
  5. Flvp.width=320;  
  6. Flvp.height=256;  
  7. Flvp.x=132.3;  
  8. Flvp.y=56

    现在需要播放视频第一段视频,代码:
    this.Flvp.load("test1.flv");

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

  1. Flvp.addEventListener(fl.video.VideoEvent.COMPLETE,Flvpcomplete);  
  2. function Flvpcomplete(eveObj:fl.video.VideoEvent):void {  
  3.      this.Flvp.load("test2.flv");  
  4.      this.Flvp.play();  
  5.  }  

     测试以上代码,发现两段视频撤换时有较长停顿,于是,想想可不可以在快播放完成前LOAD第二段FLV视频,就好像电影院放电影一样,当一台机播放,另一台机准备,快播放完时准备的机已经启动了,FLVplayback类提供了两个属性activeVideoPlayerIndex和visibleVideoPlayerIndex
activeVideoPlayerIndex处理LOAD方法,visibleVideoPlayerIndex处理play方法,修改代码,看看结果:
 

  1. import fl.video.MetadataEvent;  
  2. import fl.video.VideoEvent;  
  3. this.Flvp.skin="key/SkinUnderPlayStopSeekMuteVol.swf";  
  4. this.Flvp.volume=0.2;  
  5. Flvp.width=320;  
  6. Flvp.height=256;  
  7. Flvp.x=132.3;  
  8. Flvp.y=56;  
  9.  
  10. this.Flvp.load("test1.flv");  
  11. Flvp.addEventListener(fl.video.VideoEvent.COMPLETE,Flvpcomplete);  
  12. Flvp.addEventListener(fl.video.MetadataEvent.CUE_POINT,Flvpvuepoint);  
  13. //增加AS提示点,利用提示点事件触发LOAD第二段FLV视频  
  14. var cuePt:Object = new Object();  
  15. cuePt.time = 400;  
  16. cuePt.name = "elapsed_time";  
  17. cuePt.type = "actionscript";  
  18. Flvp.addASCuePoint(cuePt);  
  19. function Flvpcomplete(eveObj:fl.video.VideoEvent):void {  
  20. this.Flvp.activeVideoPlayerIndex=1;  
  21. this.Flvp.visibleVideoPlayerIndex=1;  
  22. Flvp.play();  
  23. this.Flvp.volume=0.21;  
  24. }  
  25. function Flvpvuepoint(eveObj:fl.video.MetadataEvent):void {  
  26. trace(eveObj.info.name);  
  27. this.Flvp.activeVideoPlayerIndex=1;  
  28. this.Flvp.source="test2.flv";  
  29. this.Flvp.activeVideoPlayerIndex=0;  


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

热门文章推荐

请稍候...

保利威视云平台-轻松实现点播直播视频应用

酷播云数据统计分析跨平台播放器