Flash 外部加载flv(1)

package { import flash.media.*; import flash.events.*; import flash.net.*; import flash.display.Sprite; import FVideo; 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 sound:SoundTransform=new SoundTransform(); public function FLVPlayer(loops:int=1,startTime:Number=0) { super(); playhead=startTime; loops=loops; init(); } private function init():void { video=new FLVideo(); var connection:NetConnection=new NetConnection(); connection.connect(null); stream=new NetStream(connection); trace(stream.soundTransform.volume); } 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 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); 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 0; } 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 0; } //检测是不是在播放 public function get playing():Boolean { return true; } //返回加载进度 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 replay():void { } //暂停 public function pause():void { stream.pause(); } //关闭 public function close():void { stream.close(); } // 回放 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; } } }

首先封装一个类,用于外部加载视频,由于这个类还可以继续完善的。暂时写了第一个版本,有兴趣可以增加其需求继续完善他,日后会对其进行修改。继续完善

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

扩展video 增加一个连接。用于记录视频的地址。

下面则是测试源码:可以设置声音

  player=new FLVPlayer(); addChild(player.contain); player.load("1.flv",true); player.play(); player.volume=0.1; trace("声音"+player.volume); player.videoWidth=550; player.videoHeight=350;

如果希望进行播放,则加上  player.play();就可以。

设置声音大小则可以设置FLVPlayer类的属性。里面的类还有部分功能还没有实现到

1.0版本,实现了外部加载的功能

             设置声音,

             视频宽度和高度

              进度,设置缓冲时间,

              基本的视频控制等基础功能

              获取视频的当前视频时间

没有实现的还有多列表播放,添加多列表播放功能,还有获取总的视频时间

后面的版本会使用air程序进行开发。希望可以进行完善

          

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值