Flash 加载flv

 需求:现在封装一个类用于方便加载flv视频。能够实现基本的播放功能.

 

  

 

ContractedBlock.gifExpandedBlockStart.gifCode
package    
{   
    
import flash.media.*;   
    
import flash.events.*;   
    
import flash.net.*;   
    
import flash.display.Sprite;   
    
import flash.display.Stage;   
    
import flash.display.StageDisplayState;   
    
import FVideo;   
    
import flash.geom.Rectangle;   
  
    
public class FLVPlayer extends EventDispatcher   
    {   
        
private var video:FLVideo;   
        
private var playhead:Number=0;   
        
private var loaded:Boolean=false;   
        
private var loops:int;   
        
private var stream:NetStream;   
        
private var autoplay:Boolean=false;   
        
private var videoURL:String=null;   
        
public var contain:Sprite=new Sprite();   
        
private var duration:Number=0;//计算总的时间长度   
        private var sound:SoundTransform=new SoundTransform();   
        
public function FLVPlayer()   
        {   
            
super();   
            init();   
        }   
        
private function init():void  
        {   
            video
=new FLVideo();   
            var connection:NetConnection
=new NetConnection();   
            connection.connect(
null);   
            stream
=new NetStream(connection);   
            var client:Object
=new Object();   
            client.onMetaData
=onMetaData;//回调函数,获取总的时间   
            stream.client=client;   
        }   
        
public function load(url:String=null,autoplay:Boolean=false,bufferSeconds:Number=1):void  
        {   
            
if (video.url == null && percentLoaded == 0)   
            {   
                video.url
=url;   
                autoplay
=autoplay;   
                video.attachNetStream(stream);   
                contain.addChild(video);
//添加容器   
                stream.bufferTime=bufferSeconds;//设置缓冲时间   
                stream.addEventListener(NetStatusEvent.NET_STATUS,netStatusHandler);   
                stream.addEventListener(AsyncErrorEvent.ASYNC_ERROR,netAsyncErrorHandler);   
            }   
        }   
        
//添加多视频,进行管理   
        
//public function add(url:String):void   
        
//{   
        
//   
        
//}   
        private function onMetaData(data:Object):void  
        {   
            duration
=data.duration;   
        }   
        
private function netStatusHandler(event:NetStatusEvent):void  
        {   
            
switch (event.info.code)   
            {   
                
case "NetConnection.Connect.Success" :   
                    
break;   
                
case "NetStream.Play.StreamNotFound" :   
                    
throw new Error("错误");   
                    
break;   
                
case "NetStream.Play.Stop" :   
                    stream.seek(
0);   
                    
//close();   
                    break;   
            }   
        }   
        
private function netAsyncErrorHandler(event:AsyncErrorEvent):void  
        {   
  
        }   
        
/*   
          @ buffertime设置缓冲时间  
          @ bufferLength 数据当前存在于缓冲区中的秒数。  
          @  
         
*/  
        
public function get bufferLength():Number   
        {   
            
return stream.bufferLength;   
        }   
        
public function set bufferTime(time:Number):void  
        {   
            stream.bufferTime
=time;   
        }   
        
public function get bufferTime():Number   
        {   
            
return stream.bufferTime;   
        }   
  
        
public function get FVideo():Video   
        {   
            
return video;   
        }   
        
//设置和返回视频播放位置(以时间为单位)   
        public function get position():Number   
        {   
            
return stream.time;   
        }   
        
public function set position(time:Number):void  
        {   
            stream.seek(time);   
        }   
        
/*  
           @设置和返回视频的声音大小  
         
*/  
        
public function get volume():Number   
        {   
            var volumes:Number
=sound.volume;   
            stream.soundTransform
=sound;   
            
return volumes;   
        }   
        
public function set volume(volumes:Number):void  
        {   
            sound.volume
=volumes;   
            stream.soundTransform
=sound;   
        }   
  
        
//获取返回视频的总的时间   
        public function get totalTime():Number   
        {   
            
return duration;   
        }   
        
//检测是不是在播放   
        public function get playing():Boolean   
        {   
            
return true;   
        }   
        
//加载进度   
        public function get bytesLoaded():uint   
        {   
  
            
return stream.bytesLoaded;   
        }   
        
//加载总量   
        public function get bytesTotal():uint   
        {   
            
return stream.bytesTotal;   
        }   
        
//返回加载进度   
        public function get percentLoaded():Number   
        {   
            var percent:Number
=stream.bytesLoaded / stream.bytesTotal;   
            
return isNaN(percent)?0:percent;   
        }   
        
/*  
         @ 下面是视频播放相关控制的接口  
         @  
         @  
         @  
         
*/  
        
//播放视频   
        public function play():void  
        {   
            
if (video.url != null)   
            {   
                stream.play(video.url);   
            }   
        }   
        
//暂停   
        public function pause():void  
        {   
            stream.pause();   
        }   
        
//关闭   
        public function close():void  
        {   
            stream.close();   
        }          
        
//停止播放   
        public function stop():void  
        {   
            stream.close();   
            stream.seek(
0);            
        }   
        
// 回放   
        public function togglePause():void  
        {   
            stream.togglePause();   
        }   
        
//清除视频   
        public function clear():void  
        {   
            video.clear();   
        }   
        
//重新播放   
        public function resume():void  
        {   
            stream.resume();   
        }   
        
//设置视频是否平滑   
        public function set smoothing(flag:Boolean):void  
        {   
            video.smoothing
=flag;   
        }   
        
//设置视频高度和宽度   
        public function get videoHeight():int  
        {   
            
return video.videoHeight;   
        }   
        
public function set videoHeight(height:int):void  
        {   
            video.height
=height;   
        }   
        
public function get videoWidth():int  
        {   
            
return video.videoWidth;   
        }   
        
public function set videoWidth(width:int):void  
        {   
            video.width
=width;   
        }   
        
//全屏模式   
        public function fullScreen(stage:Stage):void  
        {   
            
if (stage.displayState==StageDisplayState.NORMAL)   
            {   
  
                
//var screenRectangle:Rectangle = new Rectangle(video.x, video.y, video.width, video.height);   
//              stage.fullScreenSourceRect = screenRectangle;   
                stage.displayState = StageDisplayState.FULL_SCREEN;   
  
            }   
            
else if (stage.displayState ==StageDisplayState.FULL_SCREEN)   
            {   
                stage.displayState
=StageDisplayState.NORMAL;   
            }   
        }   
    }   
}  


本文来自优快云博客,转载请标明出处:http:
//blog.youkuaiyun.com/hero82748274/archive/2009/06/29/4307461.aspx

 

 

下面是继承了video类:

package
{
    import flash.media.Video;
    import flash.events.
*;
    
public class FLVideo extends Video
    {
        
public var url:String=null;
        
public  function FLVideo()
        {
            
        }
    }
    
}

 

 

测试:

基本上如果实现外部加载的其实功能很简单,为了让这个类功能更加强大一些,还可以继续完善。

 

 

 

 

转载于:https://www.cnblogs.com/hero82748274/archive/2009/06/25/1511241.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值