[AS3]as3编写的FLV,mp4视频播放器源代码示例
制作了一个简单的FLV播放器,应用了NetConnection类,NetStream类以及Video类,在创建视频之前在NetStream类对象上注册了 onMetaData事件和NET_STATUS事件
制作了一个简单的FLV播放器,应用了NetConnection类,NetStream类以及Video类,在创建视频之前在NetStream类对象上注册了 onMetaData事件和NET_STATUS事件,其中onMetaData事件获取视频文件的总时长,NET_STATUS事件处理函数获得流媒体 的下载和播放状态并做相应处理。
- import flash.media.*;
- import flash.net.URLStream;
- import flash.net.NetConnection;
- var movieTotalTime:Number=0;//总时间
- var proTime:Number=0;//已经播放的时间
- var dx=drag.x;
- var lx=line.x;
- var dw=drag.width;
- var lw=line.width;
- var tempProgress;
- var now=true;
- btn.buttonMode=true;
- line.line_b.scaleX=0;//进度条控制
- var videoconnection:NetConnection=new NetConnection();
//创建一个NetConnection对象.- videoconnection.connect(null);
- var videostream:NetStream=new NetStream(videoconnection);
//建立一个NetStream对象,连接到NetConnection里面去.- var myvideo:Video =new Video();
- myvideo.attachNetStream(videostream);
- //Video挂接NetStream,从NetStream那里读内容.
- videostream.play("http://www.cuplayer.com/test.flv");
- var client:Object=new Object();
- client.onMetaData=onMetaData;//回调函数,获取总的时间
- videostream.client=client;
- function onMetaData(data:Object):void {
- movieTotalTime=Math.round(data.duration);
- }
- //视频播放前缓冲到一定时间后才自动播放,
- videostream.bufferTime=5;
- var buffer:Boolean=true;
- function onStatus(_evt:NetStatusEvent ):void {
- trace(_evt.info.code);
- if (_evt.info.code=="NetStream.Play.Start") {
- addEventListener(Event.ENTER_FRAME ,onEnterFrame);
- } else if (_evt.info.code=="NetStream.Buffer.Empty") {
- loadmc.visible = true;
- buffer_txt.visible=true;
- buffer=true;//这里表示视频正在缓冲
- } else if (_evt.info.code=="NetStream.Buffer.Full") {
- buffer=false;
- loadmc.visible = false;
- buffer_txt.visible=false;
- }//CuPlayer.com提示这里表示视频缓冲区填满了
- }
- videostream.addEventListener(NetStatusEvent.NET_STATUS,onStatus);
- function onEnterFrame(_evt:Event ) {
- //这里就是显示当前缓冲了多少了
- bufferbuffer_txt.htmlText=buffer?"正在缓冲:"
+Math.floor(videostream.bufferLength/videostream.bufferTime*100)+"%":"";- }
- //视频大小和位置的控制
- myvideo.x=-337;
- myvideo.y=-396;
- myvideo.width=483;
- myvideo.height=372;
- addChild(myvideo);
- setChildIndex(myvideo,0);
- btn_mc.visible=false;
- btn_an.addEventListener(MouseEvent.MOUSE_DOWN,bt_down);
- btn.addEventListener(MouseEvent.CLICK,bt_down);
- line.addEventListener(MouseEvent.MOUSE_DOWN,dragdown);
- line.addEventListener(MouseEvent.MOUSE_UP,dragup);
- function dragdown(e:MouseEvent) {
- drag.x=mouseX;
- proTime=(drag.x-dx)/line.width*movieTotalTime;//当前播放的时间
- videostream.seek(proTime);
- }
- function dragup(e:MouseEvent) {
- removeEventListener(MouseEvent.MOUSE_DOWN,dragdown);
- }
- addEventListener(Event.ENTER_FRAME,dragmove);
- function dragmove(e:Event) {
- if (movieTotalTime!=0) {
- tempProgress=Math.ceil(videostream.time/movieTotalTime*100)/100;
- }
- line.line_b.scaleX=tempProgress;
- drag.x=Math.round(tempProgress*line.width)+dx-dw;
- var ld_minutes=Math.ceil(videostream.time);
- var n_minutes=Math.floor(ld_minutes/60);
- var p_minutes=Math.floor(ld_minutes%60);
- //秒数转化为时间显示
- if (p_minutes<10) {
- if (n_minutes<1) {
- proTitle.text="00"+":"+"0"+String(ld_minutes);
- } else {
- proTitle.text="0"+String(n_minutes)+":"+"0"+String(p_minutes);
- }
- } else {
- proTitle.text="0"+String(n_minutes)+":"+String(p_minutes);
- }
- var str:String;
- var my_minutes=Math.floor(movieTotalTime/60);//得到分钟的正整数
- var my_seconds=Math.floor(movieTotalTime%60);//得到秒钟的正整数
- if (my_seconds<10) {
- str="0"+String(my_seconds);
- } else {
- str=String(my_seconds);
- }
- troTitle.text=String(100+my_minutes).substr(1,2)+":"+str;
- }
- function bt_down(e:MouseEvent):void {
- now!=now;
- if (now) {
- videostream.pause();
- btn_mc.visible=true;
- btn.gotoAndStop(2);
- now=false;
- } else {
- btn_mc.visible=false;
- videostream.resume();
- btn.gotoAndStop(1);
- now=true;
- }
- if (tempProgress>=1) {
- drag.x=dx;
- btn_mc.visible=false;
- videostream.seek(0);
- videostream.resume();
- }
- }
- //全屏缩放控制
- btn_screen.buttonMode=true;
- btn_screen.addEventListener(MouseEvent.MOUSE_DOWN,fullScreen);
- function fullScreen(e:MouseEvent):void {
- if (stage.displayState==StageDisplayState.NORMAL) {
- stage.displayState=StageDisplayState.FULL_SCREEN;
- } else if (stage.displayState ==StageDisplayState.FULL_SCREEN) {
- stage.displayState=StageDisplayState.NORMAL;
- }
- }
- //声音控制
- var sound:SoundTransform =new SoundTransform();
- var volumes:Number=sound.volume;
- videostream.soundTransform=sound;
- btn_sy.gotoAndStop(7);
- for (var j:uint=1; j<=7; j++) {
- var s_btn:MovieClip=btn_sy.an.getChildAt(j-1) as MovieClip;
- s_btn.addEventListener(MouseEvent.MOUSE_DOWN,set_volume);
- }
- function set_volume(e:MouseEvent):void {
- var _mc=e.currentTarget;
- var k:Number=btn_sy.an.getChildIndex(_mc);
- btn_sy.gotoAndStop(k+1);
- sound.volume=(k+1)/7;
- videostream.soundTransform=sound;
- }
热门文章推荐
- 纯HLS(m3u8)跨平台技术(HLSPlayer,m3u8Player跨平台多终端)
- DiscuzX3.2酷播视频插件(dz论坛自定义视频插件带广告
- [微信视频]实现网站中的视频在微信平台上正常播放(超多组图)
- [rtsp]海康威视监控摄像头实现web端无插件监控实拍效果
- 很酷,酷播wordpress视频插件(支持PC/安卓/苹果跨平台播放)
- [组图]微信视频技术:支持微信视频直播和视频点播
- [AS3]as3.0的rtmp流媒体播放器写法源代码示例
- 一步一步教你制作FLV网页视频播放器
请稍候...