吾知网

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 6248|回复: 0
打印 上一主题 下一主题

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

[复制链接]
跳转到指定楼层
楼主
发表于 2016-8-19 17:02:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
一个简单的FLV播放器,应用了NetConnection类,NetStream类以及Video类,在创建视频之前在NetStream类对象上注册了onMetaData事件和NET_STATUS事件
import flash.media.*;
import flash.net.URLStream;
import flash.net.NetConnection;
var movieTotalTime:Number=0;//CuPlayer.com提示:总时间
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;//CuPlayer.com提示:进度条控制

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.okxs.net/FLV/1.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)+"%":"";
}

//CuPlayer.com提示:视频大小和位置的控制
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);
//CuPlayer.com提示:秒数转化为时间显示
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();


}

}

//CuPlayer.com提示:全屏缩放控制
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;
}
}

//CuPlayer.com提示:声音控制
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;
}


您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|吾知网 ( 粤ICP备13013563号-1 )

GMT+8, 2024-4-27 02:14 , Processed in 1.062500 second(s), 10 queries , Memcache On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表