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

[AS3]as3写的FLV播放器源代码完整实例

时间:2013-11-21 21:18OKXS.NET
[AS3]as3写的FLV播放器源代码完整实例,一个简单的FLV播放器,应用了NetConnection类,NetStream类以及Video类,在创建视频之前在NetStream类对象上注册了onMetaData事件和NET_STATUS事件

一个简单的FLV播放器,应用了NetConnection类,NetStream类以及Video类,在创建视频之前在NetStream类对象上注册了onMetaData事件和NET_STATUS事件

  1. import flash.media.*; 
  2. import flash.net.URLStream; 
  3. import flash.net.NetConnection; 
  4. var movieTotalTime:Number=0;//CuPlayer.com提示:总时间 
  5. var proTime:Number=0;//已经播放的时间 
  6. var dx=drag.x; 
  7. var lx=line.x; 
  8. var dw=drag.width; 
  9. var lw=line.width; 
  10. var tempProgress; 
  11. var now=true
  12. btn.buttonMode=true
  13. line.line_b.scaleX=0;//CuPlayer.com提示:进度条控制 
  14.  
  15. var videoconnection:NetConnection=new NetConnection();//创建一个NetConnection对象. 
  16.  
  17. videoconnection.connect(null); 
  18.  
  19. var videostream:NetStream=new NetStream(videoconnection);//建立一个NetStream对象,连接到NetConnection里面去. 
  20.  
  21. var myvideo:Video =new Video(); 
  22.  
  23. myvideo.attachNetStream(videostream);//Video挂接NetStream,从NetStream那里读内容. 
  24.  
  25. videostream.play("http://www.okxs.net/FLV/1.flv"); 
  26.  
  27. var client:Object=new Object(); 
  28.  
  29. client.onMetaData=onMetaData;//回调函数,获取总的时间   
  30.  
  31. videostream.client=client; 
  32.  
  33. function onMetaData(data:Object):void { 
  34.  
  35.  movieTotalTime=Math.round(data.duration); 
  36.  
  37. //视频播放前缓冲到一定时间后才自动播放, 
  38. videostream.bufferTime=5
  39.  
  40. var buffer:Boolean=true
  41.  
  42. function onStatus(_evt:NetStatusEvent ):void { 
  43.  trace(_evt.info.code); 
  44.  
  45.  if (_evt.info.code=="NetStream.Play.Start") { 
  46.   addEventListener(Event.ENTER_FRAME ,onEnterFrame); 
  47.  
  48.  } else if (_evt.info.code=="NetStream.Buffer.Empty") { 
  49.   loadmc.visible = true
  50.   buffer_txt.visible=true
  51.   buffer=true;//这里表示视频正在缓冲 
  52.  
  53.  
  54.  } else if (_evt.info.code=="NetStream.Buffer.Full") { 
  55.   buffer=false
  56.   loadmc.visible = false
  57.   buffer_txt.visible=false
  58.  
  59.  }//CuPlayer.com提示:这里表示视频缓冲区填满了 
  60.  
  61. videostream.addEventListener(NetStatusEvent.NET_STATUS,onStatus); 
  62.  
  63. function onEnterFrame(_evt:Event ) { 
  64.  
  65.  //这里就是显示当前缓冲了多少了 
  66.  bufferbuffer_txt.htmlText=buffer?"正在缓冲:"+Math.floor(videostream.bufferLength/videostream.bufferTime*100)+"%":""; 
  67.  
  68. //CuPlayer.com提示:视频大小和位置的控制 
  69. myvideo.x=-337; 
  70. myvideo.y=-396; 
  71. myvideo.width=483
  72. myvideo.height=372
  73. addChild(myvideo); 
  74. setChildIndex(myvideo,0); 
  75. btn_mc.visible=false
  76.  
  77. btn_an.addEventListener(MouseEvent.MOUSE_DOWN,bt_down); 
  78. btn.addEventListener(MouseEvent.CLICK,bt_down); 
  79.  
  80. line.addEventListener(MouseEvent.MOUSE_DOWN,dragdown); 
  81. line.addEventListener(MouseEvent.MOUSE_UP,dragup); 
  82. function dragdown(e:MouseEvent) { 
  83.  drag.x=mouseX
  84.  proTime=(drag.x-dx)/line.width*movieTotalTime;//当前播放的时间 
  85.  videostream.seek(proTime); 
  86. function dragup(e:MouseEvent) { 
  87.  removeEventListener(MouseEvent.MOUSE_DOWN,dragdown); 
  88.  
  89. addEventListener(Event.ENTER_FRAME,dragmove); 
  90.  
  91. function dragmove(e:Event) { 
  92.  if (movieTotalTime!=0) { 
  93.   tempProgress=Math.ceil(videostream.time/movieTotalTime*100)/100; 
  94.  } 
  95.  line.line_b.scaleX=tempProgress
  96.  drag.x=Math.round(tempProgress*line.width)+dx-dw; 
  97.  var ld_minutes=Math.ceil(videostream.time); 
  98.  var n_minutes=Math.floor(ld_minutes/60); 
  99.  var p_minutes=Math.floor(ld_minutes%60); 
  100.  //CuPlayer.com提示:秒数转化为时间显示 
  101.  if (p_minutes<10) { 
  102.   if (n_minutes<1) { 
  103.    proTitle.text="00"+":"+"0"+String(ld_minutes); 
  104.   } else { 
  105.    proTitle.text="0"+String(n_minutes)+":"+"0"+String(p_minutes); 
  106.   } 
  107.  
  108.  } else { 
  109.   proTitle.text="0"+String(n_minutes)+":"+String(p_minutes); 
  110.  } 
  111.  var str:String; 
  112.  var my_minutes=Math.floor(movieTotalTime/60);//得到分钟的正整数 
  113.  var my_seconds=Math.floor(movieTotalTime%60);//得到秒钟的正整数 
  114.  if (my_seconds<10) { 
  115.   str="0"+String(my_seconds); 
  116.  } else { 
  117.   str=String(my_seconds); 
  118.  } 
  119.  troTitle.text=String(100+my_minutes).substr(1,2)+":"+str; 
  120.  
  121.  
  122.  
  123. function bt_down(e:MouseEvent):void { 
  124.  now!=now; 
  125.  if (now) { 
  126.   videostream.pause(); 
  127.   btn_mc.visible=true
  128.   btn.gotoAndStop(2); 
  129.   now=false
  130.  } else { 
  131.   btn_mc.visible=false
  132.   videostream.resume(); 
  133.   btn.gotoAndStop(1); 
  134.   now=true
  135.  } 
  136.   if (tempProgress>=1) { 
  137.   drag.x=dx
  138.   btn_mc.visible=false
  139.   videostream.seek(0); 
  140.   videostream.resume(); 
  141.    
  142.  
  143.  } 
  144.  
  145.  
  146. //CuPlayer.com提示:全屏缩放控制 
  147. btn_screen.buttonMode=true
  148. btn_screen.addEventListener(MouseEvent.MOUSE_DOWN,fullScreen); 
  149.  
  150. function fullScreen(e:MouseEvent):void { 
  151.  if (stage.displayState==StageDisplayState.NORMAL) { 
  152.   stage.displayState=StageDisplayState.FULL_SCREEN; 
  153.  
  154.  } else if (stage.displayState ==StageDisplayState.FULL_SCREEN) { 
  155.   stage.displayState=StageDisplayState.NORMAL; 
  156.  } 
  157.  
  158. //CuPlayer.com提示:声音控制 
  159. var sound:SoundTransform =new SoundTransform(); 
  160. var volumes:Number=sound.volume; 
  161. videostream.soundTransform=sound; 
  162. btn_sy.gotoAndStop(7); 
  163.  
  164. for (var j:uint=1; j<=7; j++) { 
  165.  var s_btn:MovieClip=btn_sy.an.getChildAt(j-1) as MovieClip; 
  166.  s_btn.addEventListener(MouseEvent.MOUSE_DOWN,set_volume); 
  167.  
  168.  
  169. function set_volume(e:MouseEvent):void { 
  170.  var _mc=e.currentTarget; 
  171.  var k:Number=btn_sy.an.getChildIndex(_mc); 
  172.  btn_sy.gotoAndStop(k+1); 
  173.  sound.volume=(k+1)/7; 
  174.  videostream.soundTransform=sound; 

 

热门文章推荐

请稍候...

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

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