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

[AS3]as3.0中的flv视频和swf的文件截图示例代码

时间:2013-06-01 18:15CuPlayer.com
[AS3]as3.0中的flv视频和swf的文件截图示例代码,要对flv 截图,必面是下载方式,好像rtmp方式我没有试成功

要对flv 截图,必面是下载方式,好像rtmp方式我没有试成功

  1. package com.heyuansoft.image{ 
  2. import com.adobe.images.JPGEncoder; 
  3.     import com.adobe.images.BitString; 
  4.     import flash.utils.*; 
  5. import flash.display.*;    
  6.     import flash.net.*; 
  7.     import flash.events.*; 
  8.     import flash.utils.ByteArray; 
  9. import fl.video.*; 
  10.  
  11. public class CatchImageToSwf extends MovieClip{ 
  12.    private var mc1:MovieClip = new MovieClip(); 
  13.    private var ldinfo; 
  14.    private var flvplay:FLVPlayback = new FLVPlayback(); 
  15.    public function catchImageToSwf(){ 
  16.      trace("start......"); 
  17.    } 
  18.    private function trim(myString:String){ 
  19.     if(myString.indexOf(" ")==-1 && myString.indexOf(" ")==-1){ 
  20.      return myString; 
  21.       } 
  22.      var omyString:String=myString; 
  23.      myString=replace(myString," "," "); 
  24.      var lblanknum:Number=0; 
  25.      var rblanknum:Number=0; 
  26.     for(var i:Number=0;i<myString.length;i++){ 
  27.      if(myString.charAt(i)!=" "){ 
  28.          break; 
  29.      }else{ 
  30.         lblanknum++; 
  31.      } 
  32.      } 
  33.     for(var j:Number=(myString.length-1);j>0;j--){ 
  34.      if(myString.charAt(j)!=" "){ 
  35.          break; 
  36.      }else{ 
  37.          rblanknum++; 
  38.      } 
  39.      } 
  40.     return omyString.substring(lblanknum,(omyString.length-rblanknum)); 
  41. } 
  42. private function replace(s:String,o:String,n:String){ 
  43.     return ss=s.split(o).join(n); 
  44.    } 
  45.    private function getFileName(URLpath:String){ 
  46.     return URLpath.substring(URLpath.lastIndexOf("/")+1,URLpath.length); 
  47.    } 
  48.    private function getExpendName(URLpath:String){ 
  49.     var fileName = getFileName(trim(URLpath)); 
  50.     if(fileName.indexOf(".")==-1){ 
  51.     return null; 
  52.     }else{ 
  53.     var temp:String =fileName.substring(fileName.lastIndexOf(".")+1,fileName.length); 
  54.     return temp; 
  55.          } 
  56.    } 
  57.    private function getError(e:Event):void{ 
  58.      trace("error......"); 
  59.    } 
  60.    public function setMc1WidthAndHeight(w:Number,h:Number){ 
  61.     mc1.width = w; 
  62.     mc1.height = h; 
  63.    } 
  64.    public function setFlvPlayWidthAndHeight(w:Number,h:Number){ 
  65.     flvplay.width=w; 
  66.     flvplay.height=h 
  67.    } 
  68.    public function getImage(){ 
  69.     var expendName = getExpendName(url); 
  70.     switch(expendName){ 
  71.      case null:trace("typeError"); 
  72.      case "flv": playFlv(url,quality,serApp,imageName);break; 
  73.      case "swf": playSwf(url,quality,serApp,imageName);break; 
  74.      
  75.     } 
  76.    } 
  77.    private function playFlv(flvUrl:String,quality:Number,serApp:String,imageName:String):void{ 
  78.  
  79.     flvplay.source=flvUrl; 
  80.     flvplay.addEventListener("progress",printinfo); 
  81.     function printinfo(infoObj:VideoProgressEvent):void{ 
  82.      if(infoObj.bytesLoaded == flvplay.bytesTotal){  
  83. //这里要注意的就是不须要这么久, 
  84. //可以下载到二分之一处就行,因为我只要在三分之一的地方截图 
  85.      trace("source : "+flvplay.bytesTotal); 
  86.      trace(Math.floor(flvplay.totalTime/3)); 
  87.     flvplay.seekSeconds(Math.floor(flvplay.totalTime/3)); 
  88.      } 
  89.     } 
  90.     flvplay.addEventListener("seeked",compSeek); 
  91.     function compSeek(e:Event){ 
  92.      trace("seeked"); 
  93.      
  94.      createJpg(flvplay,quality,serApp,imageName); 
  95.       flvplay.stop(); 
  96.     } 
  97.     
  98.    } 
  99.    
  100.    private function playSwf(swfUrl:String,quality:Number,serApp:String,imageName:String):void{ 
  101.     var myVar:int = Math.floor(Math.random()*1000000); 
  102.     var url_img:URLRequest = new URLRequest(swfUrl+"?number="+myVar); 
  103.     var ld:Loader = new Loader(); 
  104.     ldldinfo=ld.contentLoaderInfo; 
  105.     ldinfo.addEventListener(Event.COMPLETE,getinfo); 
  106.     function getinfo(e:Event):void{ 
  107.       try{ 
  108.           mc1 =ldinfo.content; 
  109.        mc1.gotoAndStop(Math.ceil(mc1.totalFrames/3)); 
  110.         createJpg(mc1,quality,serApp,imageName); 
  111.          }catch(error:TypeError){ 
  112.        mc1.addChild(ld); 
  113.        var minuteTimer:Timer = new Timer(3000, 1); 
  114.          minuteTimer.start(); 
  115.                   minuteTimer.addEventListener(TimerEvent.TIMER, onTick); 
  116.        function onTick(event:Event):void 
  117.               { 
  118.         createJpg(mc1,quality,serApp,imageName); 
  119.        } 
  120.       } 
  121.       } 
  122.     ldinfo.addEventListener("ioError" ,getError); 
  123.     ld.load(url_img); 
  124.    } 
  125.    private function createJpg(object:DisplayObject,quality:Number,serApp:String,imageName:String):void{ 
  126.     trace("xxx"+mc1.height); 
  127.     if(object.width!=0||object.height!=0){ 
  128.     var jpgBd:BitmapData = new BitmapData(object.width,object.height); 
  129.     jpgBd.draw(object); 
  130.     var jpgEncoder:JPGEncoder = new JPGEncoder(quality); 
  131.     var jpgStream:ByteArray = jpgEncoder.encode(jpgBd); 
  132.     trace("jpgStream:"+jpgStream.length); 
  133.     var header:URLRequestHeader = new URLRequestHeader("Content-type","application/octet-stream"); 
  134.     var url:String =serApp+imageName; 
  135.     trace(url); 
  136.     var jpgURLRequest:URLRequest = new URLRequest (url);   
  137.     jpgURLRequest.requestHeaders.push(header);     
  138.     jpgURLRequest.method = URLRequestMethod.POST;     
  139.     jpgURLRequest.data = jpgStream; 
  140.     //navigateToURL(jpgURLRequest); 
  141.     var myLoader:URLLoader = new URLLoader(jpgURLRequest); 
  142.     } 
  143.    } 
  144. } 
  145. } 

 

热门文章推荐

请稍候...

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

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