`

[转]FLV播放器

阅读更多
package 
{
        /*
         *作  者:淘剑龙
         *名  称:flvplayer
         *时  间:2011.1.9 
         *说  明:参照帮助文档写的用于学习交流的flv播放器!
         */
        import flash.display.Sprite;
        import flash.display.MovieClip;
        import flash.display.SimpleButton;
        import flash.display.Loader;
        import flash.media.Video;
        import flash.net.URLRequest;
        import flash.net.NetConnection;
        import flash.net.NetStream;
        import flash.events.*;
        import flash.media.SoundTransform;
        import com.greensock.*; 
        import com.greensock.easing.*;        
        import com.Data.TimeFormat;
        
        public class flvPlayer extends Sprite
        {
                private var sw:Number = stage.stageWidth;
                private var sh:Number = stage.stageHeight;
                private var myVideo:Video;
                private var myLoaderoader;

                private var connection:NetConnection;
                private var stream:NetStream;
                private var soundControl:SoundTransform;
                private var soundBol:Boolean = true;  //控制声音开关

                private var stopBtn:Stop;        //停止按钮
                private var playBtnlay;        //播放按钮
                private var soundBtn:SoundBtn;   //声音按钮
                private var pauseBtnause;      //暂停按钮
                private var proBar:progressBar;  //进度条
                private var sBtn:ScreenBtn;      //舞台按钮

                private var UIContainer:MovieClip;
                private var videoURL:String = "flv/video.flv"; //播放的视频地址
                private var playState:Boolean = true;
                private var curTime:Number;           //播放当前时间
                private var obj:Object = new Object;  //监听事件
                private var per:Number = 0;           //播放进度
                private var per2:Number = 0;          //流加载进度
                private var over:Boolean = false;
                private var out:Boolean = true;
                private var tf:TimeFormat = new TimeFormat;                
                public function flvPlayer()
                {
                        soundControl = new SoundTransform();  //控制声音
                        
                        sBtn = new ScreenBtn;
                        UIContainer = new MovieClip;                        
                        myLoader = new Loader;
                        myVideo  = new Video(sw,sh);
                        addChild(myVideo);
                        UIContainer.x = 50;
                        UIContainer.y = sh - UIContainer.height + 30;        
                        
                        sBtn.useHandCursor = false;   //舞台按钮
                        sBtn.addEventListener(MouseEvent.MOUSE_OVER,OverScreen);                        
                        addChild(sBtn);
                        addChild(UIContainer);                        
                        
                        init();
                        listener();
                        addEventListener(Event.ENTER_FRAME,onEnter);
                }
                private function init()
                {
                        setPlayerUI();                                        
                        connection = new NetConnection;
                        connection.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler);
                        connection.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
                        connection.connect(null);
                }
                private function listener()
                {                        
                        obj.onMetaData = function(info:Object)
                        {
                                //在 Flash Player 接收在正播放的 FLV 文件中嵌入的描述性信息时调度。
                                //trace("metadata: duration=" + info.duration + " width=" + info.width + " height=" + info.height + " framerate=" + info.framerate);
                                obj.duration = info.duration; //视频时间长度
                }
                        obj.onPlayStatus = function(info:Object)
                        {
                                
                                trace("播放完毕");
                        }
                        obj.onCuePoint = function(info:Object):void 
                        {
                                                                trace("cuepoint: time=" + info.time + " name=" + info.name + " type=" + info.type);
                        }
                }                
                private function onEnter(e:Event)
                {
                        if(over)
                        {                                
                                TweenLite.to(UIContainer, 0.6, {y:sh - UIContainer.height ,alpha:1});                        
                        }
                        else
                        {                                
                                TweenLite.to(UIContainer, 0.6 ,{y:sh - UIContainer.height + 30,alpha:0});
                        }
                }
                private function OverScreen(e:MouseEvent)
                {
                        over = true;                        
                        
                        sBtn.addEventListener(MouseEvent.MOUSE_OUT,OutScreen);
                        sBtn.removeEventListener(MouseEvent.MOUSE_OVER,OverScreen);
                }
                private function OutScreen(e:MouseEvent)
                {
                        over = false;                        
                        TweenLite.from(UIContainer, 0.6 , {y:sh - UIContainer.height,alpha:1});
                        
                        sBtn.removeEventListener(MouseEvent.MOUSE_OUT,OutScreen);
                        sBtn.addEventListener(MouseEvent.MOUSE_OVER,OverScreen);
                }                
                private function setPlayerUI()
                {                        
                        playBtn = new Play;
                        playBtn.name = "playBtn";
                        pauseBtn= new Pause;
                        pauseBtn.name= "pauseBtn";
                        stopBtn = new Stop;
                        stopBtn.name = "stopBtn";
                        soundBtn= new SoundBtn;
                        soundBtn.name= "soundBtn";
                        
                        /*
                         *预留个全屏的
                         fullScreenBtn                         
                         */
                        proBar = new progressBar;
                        proBar.name = "proBar";

                        var xjg:Number = 5;
                        pauseBtn.x = playBtn.x  + (playBtn.width + xjg);
                        stopBtn.x  = pauseBtn.x + (stopBtn.width + xjg);
                        soundBtn.x = stopBtn.x  + (soundBtn.width+ xjg);
                        proBar.x   = playBtn.x - playBtn.width/2;
                        proBar.y   = pauseBtn.height - proBar.height + 5;

                        playBtn.btnSensor.addEventListener(MouseEvent.MOUSE_OVER,OverHandler);
                        playBtn.btnSensor.addEventListener(MouseEvent.MOUSE_OUT,OutHandler);

                        pauseBtn.btnSensor.addEventListener(MouseEvent.MOUSE_OVER,OverHandler);
                        pauseBtn.btnSensor.addEventListener(MouseEvent.MOUSE_OUT,OutHandler);

                        stopBtn.btnSensor.addEventListener(MouseEvent.MOUSE_OVER,OverHandler);
                        stopBtn.btnSensor.addEventListener(MouseEvent.MOUSE_OUT,OutHandler);

                        soundBtn.btnSensor.addEventListener(MouseEvent.MOUSE_OVER,OverHandler);
                        soundBtn.btnSensor.addEventListener(MouseEvent.MOUSE_OUT,OutHandler);

                        UIContainer.addChild(proBar);
                        UIContainer.addChild(stopBtn);
                        UIContainer.addChild(playBtn);
                        UIContainer.addChild(soundBtn);
                        UIContainer.addChild(pauseBtn);
                }
                private function OverHandler(e:MouseEvent)
                {
                        over = true;                        
                        UIContainer.y = sh - UIContainer.height;
                        UIContainer.alpha = 1;
                        sBtn.removeEventListener(MouseEvent.MOUSE_OVER,OverScreen);
                        
                        var str:String = e.target.parent.name;
                        switch (str)
                        {
                                case "playBtn" :                                                                            
                                        e.target.parent.mcIcon.mcIconAnimation.gotoAndPlay("Over");
                                        break;

                                case "stopBtn" :                                                                           
                                        e.target.parent.mcIcon.mcIconAnimation.gotoAndPlay("Over");
                                        break;

                                case "pauseBtn" :                                    
                                        e.target.parent.mcIcon.mcIconAnimation.gotoAndPlay("Over");
                                        break;

                                //静音
                                case "soundBtn" :                                                                    
                                        e.target.parent.mcIcon.mcIconAnimation.gotoAndPlay("Over");
                                        break;
                        }
                }
                private function OutHandler(e:MouseEvent)
                {
                        over = true;
                        UIContainer.y = sh - UIContainer.height;
                        UIContainer.alpha = 1;
                        sBtn.addEventListener(MouseEvent.MOUSE_OVER,OverScreen);
                        
                        var str:String = e.target.parent.name;
                        switch (str)
                        {
                                case "playBtn" :                                   
                                        e.target.parent.mcIcon.mcIconAnimation.gotoAndPlay("Out");
                                        break;

                                case "stopBtn" :                                   
                                        e.target.parent.mcIcon.mcIconAnimation.gotoAndPlay("Out");
                                        break;

                                case "pauseBtn" :                                    
                                        e.target.parent.mcIcon.mcIconAnimation.gotoAndPlay("Out");
                                        break;

                                case "soundBtn" :                                    
                                        e.target.parent.mcIcon.mcIconAnimation.gotoAndPlay("Out");
                                        break;
                        }
                }
                private function netStatusHandler(event:NetStatusEvent)
                {
                        switch (event.info.code)
                        {
                                case "NetConnection.Connect.Success" :
                                        connectStream();
                                        break;

                                case "NetStream.Play.StreamNotFound" :
                                        trace("Unable to locate video: " + videoURL);
                                        break;
                        }
                }
                private function connectStream()
                {
                        stream= new NetStream(connection);                        
                        stream.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler);
                        stream.addEventListener(AsyncErrorEvent.ASYNC_ERROR, asyncErrorHandler);

                        //videoURL =  "flv/langjiu.flv";
                        myVideo.attachNetStream(stream);
                        stream.play(videoURL);        
                        //调度一些事件,如获取视频时间总长度(记得视频得处理成含有onMediaData能读取视频数据的格式)
                        stream.client = obj;   //new CustomClient;                        
                        playBtn.btnSensor.addEventListener(MouseEvent.CLICK,ClickHandler);
                        pauseBtn.btnSensor.addEventListener(MouseEvent.CLICK,ClickHandler);
                        stopBtn.btnSensor.addEventListener(MouseEvent.CLICK,ClickHandler);
                        soundBtn.btnSensor.addEventListener(MouseEvent.CLICK,ClickHandler);
                        
                        addEventListener(Event.ENTER_FRAME,enterHandler);
                }
                private function enterHandler(e:Event)
                {
                        per = stream.time / obj.duration * 100;
                        per2= stream.bytesLoaded / stream.bytesTotal * 100;
                        
                        proBar.playPro.gotoAndStop(Math.round(per));
                        proBar.streamPro.gotoAndStop(Math.round(per2));                        
                        
                        proBar.disTime.text = getTime(stream);                                        
                }
                private function getTime(stream:NetStream):String
                {
                        var str:String = new String;
                        var p:Number = Math.round(stream.time);  //播放时间
                        var a:Number = Math.round(obj.duration); //视频总时间长                        
                        /*var ps:String = tf.GetTimeFormat(p);
                        var alls:String = tf.GetTimeFormat(a);        */                                            
                        str = tf.GetTimeFormat(p) + "/" + tf.GetTimeFormat(a);
                        return str;
                }
                private function asyncErrorHandler(event:AsyncErrorEvent):void
                {
                        // ignore AsyncErrorEvent events.
                }

                private function ClickHandler(e:MouseEvent)
                {
                        //点击按钮事件
                        var str:String = e.target.parent.name;
                        switch (str)
                        {
                                case "playBtn" :
                                        //playState = !playState;
                                        curTime = stream.time;                                        
                                        stream.seek(curTime);
                                        stream.resume();        //恢复回放暂停的视频流。
                                        //stream.togglePause(); //暂停或恢复流的回放。
                                        break;

                                case "pauseBtn" :
                                        stream.pause();//暂停
                                        break;

                                case "stopBtn" :
                    stream.seek(0);
                                        stream.pause();//暂停
                                        break;
                                
                                //静音
                                case "soundBtn" :
                                    soundBol = !soundBol;
                                    soundControl.volume = soundBol == true ? 1:0;
                                    stream.soundTransform = soundControl;
                                   /*stream.close();
                                        stream.play(videoURL);*/
                                        break;
                        }
                }
        }
}



这个是我根据FLASH CS3帮助文档写的个简单播放器,供大家学习交流用
里面flv文件夹里没有视频请自己添加一个进去,另外还有个flv混淆器,有的flv格式文件没有包括一些信息如视频总时间长度等信息,所以要处理下,否则里面读不出视频总时间长度,视频取名为video.flv,如果你想改名字,到代码里改去,com文件夹里有个类是我写的来用于显示(00:00)时间格式的,另外一个是TWEENLITE,你懂的,,,这只是个简单播放器,如果你想要更复杂的,可以自己去添加,有不足的地方还请高手指出,为了学习,代码写的很凌乱,还望见谅。
分享到:
评论

相关推荐

    几个FLV播放器源文件

    这里提到的"几个FLV播放器源文件"可能包含了几个不同的FLV播放器的源代码,它们可以是开源或共享的,允许开发者根据自己的需求进行定制和修改。 FLV播放器源码通常包含以下几个关键部分: 1. **解码器**:FLV...

    flv 播放器 flv 播放器

    在本文中,我们将深入探讨FLV播放器的相关知识点,包括其工作原理、常见功能、兼容性以及如何使用和选择合适的FLV播放器。 1. **工作原理** FLV播放器的工作原理基于Adobe Flash Player插件,该插件允许浏览器解析...

    flv 播放器 web版

    Web版FLV播放器是为了在网页上实现FLV视频内容的无缝播放而设计的。这些播放器通常基于Flash技术,允许用户在浏览器中观看视频,无需离开当前页面。随着HTML5的发展,现代的Web FLV播放器也开始支持HTML5视频标签,...

    两款flv播放器 两款flv播放器

    本主题主要聚焦于两款FLV播放器,它们是实现FLV文件播放的关键工具。 1. 播放器一:JW Player JW Player 是一款非常流行的开源FLV播放器,适用于网站和移动应用。它的功能强大,支持多种视频格式,包括FLV、MP4、...

    凤凰网FLV播放器原码.fla

    《凤凰网FLV播放器原码解析》 在数字媒体领域,播放器技术是不可或缺的一环,尤其是对于在线视频服务来说。本文将详细探讨"凤凰网FLV播放器原码"的相关知识点,帮助读者深入理解其工作原理和技术细节。 一、FLV...

    FLV 播放器源码 网页版

    在实际应用中,这样的FLV播放器源码可能会包含以下几个关键部分: 1. **HTML和JavaScript**:HTML页面是用户与播放器交互的界面,而JavaScript负责处理用户操作,如播放、暂停、快进、快退等。 2. **Flash组件**:...

    flv.min_flv播放器_

    "flv.min_flv播放器_"这个标题暗示我们这里讨论的是一个轻量级的、优化过的FLV播放器,可能是JavaScript实现的,用于在网页中播放FLV视频。 描述中提到“将flv转为mp4”,这涉及到了视频格式转换的知识。MP4(MPEG-...

    FLV 播放器源代码

    FLV播放器源代码是用于解析和播放FLV(Flash Video)格式文件的程序代码,这种格式常用于网络流媒体视频。在Web开发中,尤其是早年基于Flash技术的网站,FLV播放器是一个常见的组件。以下是关于FLV播放器源代码及...

    flv播放器flv播放器

    FLV播放器是一种专门用于播放FLV格式视频的软件工具,这种格式通常在网络流媒体应用中广泛使用。FLV,全称Flash Video,是Adobe Systems开发的一种视频格式,旨在为互联网提供高质量的视频流服务。在本文中,我们将...

    html中flv视频播放器

    4. **FLV播放器**:FLV播放器是在HTML页面中嵌入的Flash组件,负责解析FLV文件并控制视频播放。这些播放器可以提供播放、暂停、停止、快进、快退等功能,并支持自定义播放控件和界面设计。例如,JW Player、...

    flv播放器 vcastr

    总的来说,Vcastr FLV播放器在FLV格式视频的网络播放方面提供了稳定且高效的解决方案,对于需要在网页中嵌入视频的用户来说,是一个值得考虑的选择。随着技术的发展,了解如何适应和利用新的播放技术和格式将变得...

    网页版flv播放器

    网页版FLV播放器是一种专为在Web上播放FLV格式视频文件设计的轻量级应用程序。FLV,全称为Flash Video,是Adobe Systems开发的一种流媒体格式,曾广泛用于在线视频分享平台,因其小巧的文件体积和相对较高的画质而受...

    FLV播放器_源代码

    FLV播放器是一种常见的在线视频播放技术,广泛应用于网页中的流媒体内容展示。源代码则是指用于构建软件或程序的原始指令集合,通常由程序员编写并可以被其他开发者查看、学习和修改。在这个"FLV播放器_源代码"的...

    FLV播放器.rar )

    FLV播放器是一种常见的在线视频播放技术,主要应用于互联网上流媒体内容的播放。FLV是Flash Video的缩写,由Adobe Systems开发,是Flash格式的一部分,广泛用于在网页上展示视频内容。在这个"FLV播放器.rar"压缩包中...

    flv播放器例子+代码

    在本文中,我们将深入探讨FLV播放器及其相关的编程知识。 首先,让我们理解FLV播放器的核心功能。FLV播放器是用于解析和播放FLV格式视频文件的应用程序或组件。它通常与Web页面集成,为用户提供播放、暂停、停止、...

    FLV格式文件播放器

    FLV播放器的实现通常基于Adobe Flash Player,这是一个跨平台的浏览器插件,能够播放SWF和FLV文件。然而,随着HTML5的普及,现代的FLV播放器也开始支持HTML5视频元素,以便在不支持Flash的设备上(如苹果iOS设备)也...

    flash播放器 web上用的播放器 flv播放器

    本文将深入探讨Flash Player、Web上的视频播放器以及FLV播放器的相关知识点。 Flash Player是由Adobe公司开发的一款插件,主要用于在Web浏览器中播放包含动态图形、音频和视频的SWF文件。在2000年代中期,Flash ...

    flv视频播放器

    - 在线教育:FLV播放器常用于在线课程视频的播放,方便学生随时随地学习。 - 企业培训:企业可以利用FLV视频播放器进行远程员工培训,减少实地培训的成本。 - 社交媒体:社交媒体平台早期广泛使用FLV格式,以便...

    flv播放器 HTML实例

    首先,FLV播放器的核心是Adobe的Flash Player插件,它是一个能够在浏览器中解析和播放FLV视频的组件。然而,随着HTML5的普及和Flash的逐渐淘汰,现代的FLV播放器通常会结合HTML5的`<video>`标签和Flash作为备选方案...

Global site tag (gtag.js) - Google Analytics