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

[as3]as3实现mp4视频无缝循环播放的源代码范例

时间:2016-09-18 16:02酷播
一个视频要循环播放,通常的办法都是播放完后再重新播放,但是不可避免的播放结束和重新开始播放这个时间点上会有停顿,如何解决这个问题,

[as3]as3实现mp4视频无缝循环播放的源代码范例

一个视频要循环播放,通常的办法都是播放完后再重新播放,但是不可避免的播放结束和重新开始播放这个时间点上会有停顿,如何解决这个问题,下面有一个范例

  1. package com.views 
  2.     import flash.display.Sprite; 
  3.     import flash.events.Event; 
  4.     import flash.media.Video; 
  5.     import flash.net.NetConnection; 
  6.     import flash.net.NetStream; 
  7.     import flash.utils.setTimeout; 
  8.      
  9.     /** 
  10.      * @author Frost.Yen 
  11.      * @email 871979853@qq.com 
  12.      * @build 2016-8-9 上午10:53:13 
  13.      */ 
  14.     public class VideoView extends Sprite 
  15.     { 
  16.         private var _video1:VideoDisplay; 
  17.         private var _video2:VideoDisplay; 
  18.         private var _currVideo:VideoDisplay; 
  19.         private var _duration:Number; 
  20.         private var _b:Boolean; 
  21.         public function VideoView(url:String) 
  22.         { 
  23.             _video1 = new VideoDisplay(url,true); 
  24.             _video2 = new VideoDisplay(url); 
  25.             _video1.onMetaData = onMetaData; 
  26.             _video2.visible = false
  27.             _currVideo = _video1
  28.             this.addChild(_video1); 
  29.             this.addChild(_video2); 
  30.             this.addEventListener(Event.ENTER_FRAME,onCheck); 
  31.         } 
  32.         private function onMetaData():void 
  33.         { 
  34.             _duration = _video1.duration; 
  35.         } 
  36.         private function onCheck(e:Event):void 
  37.         { 
  38.             //trace("vs.time" + _currVideo.time+ " duration= " + _duration ); 
  39.             if (_currVideo.time > 0 && _duration > 0) 
  40.             { 
  41.                  
  42.                 if (_duration-_currVideo.time <=0.1 ) 
  43.                 { 
  44.                      
  45.                     this.removeEventListener(Event.ENTER_FRAME,onCheck); 
  46.                     setTimeout(add,2000); 
  47.                     if(_video1.visible){ 
  48.                         _video1.visible = false
  49.                         _video2.visible = true
  50.                         _video1.seek(0); 
  51.                         _video1.pause(); 
  52.                         _video2.play(); 
  53.                         _currVideo = _video2
  54.                     }else{ 
  55.                         _video2.visible = false
  56.                         _video1.visible = true
  57.                         _video2.seek(0); 
  58.                         _video2.pause(); 
  59.                         _video1.play(); 
  60.                         _currVideo = _video1
  61.                     } 
  62.                      
  63.                     //_ns.seek(0);//跳转到0秒处播放。 
  64.                 } 
  65.             } 
  66.         } 
  67.         private function add():void 
  68.         { 
  69.             this.addEventListener(Event.ENTER_FRAME,onCheck); 
  70.         } 
  71.     } 
  72. import flash.display.Sprite; 
  73. import flash.media.Video; 
  74. import flash.net.NetConnection; 
  75. import flash.net.NetStream; 
  76.  
  77. class VideoDisplay extends Sprite 
  78.     private var _video:Video; 
  79.     private var _ns:NetStream; 
  80.     private var _duration:Number; 
  81.     public var onMetaData:Function; 
  82.     public function VideoDisplay(url:String,auto:Boolean=false
  83.     { 
  84.         var nc:NetConnection = new NetConnection(); 
  85.         nc.connect(null); 
  86.         _ns = new NetStream(nc);     
  87.         var client:Object = new Object( ); 
  88.         client.onMetaData = function(data:Object):void { 
  89.             //trace(data.duration); 
  90.             _duration = data.duration; 
  91.             if(onMetaData!=null){ 
  92.                 onMetaData(); 
  93.             } 
  94.              
  95.         }; 
  96.         _ns.client = client; 
  97.         _video = new Video(1920,1080); 
  98.         _video.attachNetStream(_ns); 
  99.         _ns.play(url); 
  100.         if(!auto){ 
  101.             _ns.seek(0); 
  102.             _ns.pause(); 
  103.         } 
  104.         this.addChild(_video); 
  105.     }     
  106.     public function play():void 
  107.     { 
  108.         _ns.resume(); 
  109.     } 
  110.     public function pause():void 
  111.     { 
  112.         _ns.pause(); 
  113.     } 
  114.     public function seek(offset:Number):void 
  115.     { 
  116.         _ns.seek(offset); 
  117.     } 
  118.     public function get duration():Number 
  119.     { 
  120.         return _duration; 
  121.     } 
  122.     public function get time():Number 
  123.     { 
  124.         return _ns.time; 
  125.     } 

[as3]as3实现mp4视频无缝循环播放的源代码范例

http://www.cnblogs.com/frost-yen/p/5817985.html

热门文章推荐

请稍候...

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

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