原地址:http://help.adobe.com/zh_CN/AIR/1.5/jslr/flash/events/NetStatusEvent.html
下表说明了 code
和 level
属性可能的字符串值。
代码属性 | 级别属性 | 意义 |
---|---|---|
"NetStream.Buffer.Empty" | "status" | 数据的接收速度不足以填充缓冲区。数据流将在缓冲区重新填充前中断,此时将发送 NetStream.Buffer.Full 消息,并且该流将重新开始播放。 |
"NetStream.Buffer.Full" | "status" | 缓冲区已满并且流将开始播放。 |
"NetStream.Buffer.Flush" | "status" | 数据已完成流式处理,剩余的缓冲区将被清空。 |
"NetStream.Failed" | "error" | 仅限 Flash Media Server。发生了错误,在其它事件代码中没有列出此错误的原因。 |
"NetStream.Publish.Start" | "status" | 已经成功发布。 |
"NetStream.Publish.BadName" | "error" | 试图发布已经被他人发布的流。 |
"NetStream.Publish.Idle" | "status" | 流发布者空闲而没有在传输数据。 |
"NetStream.Unpublish.Success" | "status" | 已成功执行取消发布操作。 |
"NetStream.Play.Start" | "status" | 播放已开始。 |
"NetStream.Play.Stop" | "status" | 播放已结束。 |
"NetStream.Play.Failed" | "error" | 出于此表中列出的原因之外的某一原因(例如订阅者没有读取权限),播放发生了错误。 |
"NetStream.Play.StreamNotFound" | "error" | 无法找到传递给 play() 方法的 FLV。 |
"NetStream.Play.Reset" | "status" | 由播放列表重置导致。 |
"NetStream.Play.PublishNotify" | "status" | 到流的初始发布被发送到所有的订阅者。 |
"NetStream.Play.UnpublishNotify" | "status" | 从流取消的发布被发送到所有的订阅者。 |
"NetStream.Play.InsufficientBW" | "warning" | 仅限 Flash Media Server。客户端没有足够的带宽,无法以正常速度播放数据。 |
“NetStream.Play.FileStructureInvalid” | "error" | 应用程序检测到无效的文件结构并且将不会尝试播放这种类型的文件。用于 AIR 和 Flash Player 9.0.115.0 及更高版本。 |
“NetStream.Play.NoSupportedTrackFound” | "error" | 应用程序未检测到任何支持的音轨(视频、音频或数据)并且将不会尝试播放该文件。用于 AIR 和 Flash Player 9.0.115.0 及更高版本。 |
"NetStream.Play.Transition" | "status" | 仅限 Flash Media Server。由位速率流切换而导致的到其它位置的流过渡。此代码指示用于启动流切换的 NetStream.play2() 调用的成功状态事件。如果切换失败,则服务器将改为发送 NetStream.Play.Failed 事件。用于 Flash Player 10 及更高版本。 |
"NetStream.Play.Transition" | "status" | 仅限 Flash Media Server 3.5 和更高版本。服务器收到因位速率流切换而需要过渡到其他流的命令。此代码指示用于启动流切换的 NetStream.play2() 调用的成功状态事件。如果切换失败,则服务器将改为发送 NetStream.Play.Failed 事件。当发生流切换时,将调度带有代码“NetStream.Play.TransitionComplete”的 onPlayStatus 事件。用于 Flash Player 10 及更高版本。 |
"NetStream.Pause.Notify" | "status" | 流已暂停。 |
"NetStream.Unpause.Notify" | "status" | 流已恢复。 |
"NetStream.Record.Start" | "status" | 录制已开始。 |
"NetStream.Record.NoAccess" | "error" | 试图录制仍处于播放状态的流或客户端没有访问权限的流。 |
"NetStream.Record.Stop" | "status" | 录制已停止。 |
"NetStream.Record.Failed" | "error" | 尝试录制流失败。 |
"NetStream.Seek.Failed" | "error" | 搜索失败,如果流处于不可搜索状态,则会发生搜索失败。 |
"NetStream.Seek.InvalidTime" | "error" | 对于使用渐进式下载方式下载的视频,用户已尝试跳过到目前为止已下载的视频数据的结尾或在整个文件已下载后跳过视频的结尾进行搜寻或播放。message.details 属性包含一个时间代码,该代码指出用户可以搜寻的最后一个有效位置。 |
"NetStream.Seek.Notify" | "status" | 搜寻操作完成。 |
"NetConnection.Call.BadVersion" | "error" | 以不能识别的格式编码的数据包。 |
"NetConnection.Call.Failed" | "error" | NetConnection.call 方法无法调用服务器端的方法或命令。 |
"NetConnection.Call.Prohibited" | "error" | Action Message Format (AMF) 操作因安全原因而被阻止。AMF URL 与文件(其中包含调用 NetConnection.call() 方法的代码)不在同一个域中,或者 AMF 服务器没有信任文件(其中包含调用 NetConnection.call() 方法的代码)所在域的策略文件。 |
"NetConnection.Connect.Closed" | "status" | 成功关闭连接。 |
"NetConnection.Connect.Failed" | "error" | 连接尝试失败。 |
"NetConnection.Connect.Success" | "status" | 连接尝试成功。 |
"NetConnection.Connect.Rejected" | "error" | 连接尝试没有访问应用程序的权限。 |
"NetStream.Connect.Closed" | "status" | 成功关闭 P2P 连接。info.stream 属性指示已关闭的流。 |
"NetStream.Connect.Failed" | "error" | P2P 连接尝试失败。info.stream 属性指示已失败的流。 |
"NetStream.Connect.Success" | "status" | P2P 连接尝试成功。info.stream 属性指示已成功的流。 |
"NetStream.Connect.Rejected" | "error" | P2P 连接尝试没有访问另一个对等方的权限。info.stream 属性指示被拒绝的流。 |
"NetConnection.Connect.AppShutdown" | "error" | 正在关闭指定的应用程序。 |
"NetConnection.Connect.InvalidApp" | "error" | 连接时指定的应用程序名无效。 |
"SharedObject.Flush.Success" | "status" | “待定”状态已解析并且 SharedObject.flush() 调用成功。 |
"SharedObject.Flush.Failed" | "error" | “待定”状态已解析,但 SharedObject.flush() 失败。 |
"SharedObject.BadPersistence" | "error" | 使用永久性标志对共享对象进行了请求,但请求无法被批准,因为已经使用其它标记创建了该对象。 |
"SharedObject.UriMismatch" | "error" | 试图连接到拥有与共享对象不同的 URI (URL) 的 NetConnection 对象。 |
如果您不断地看到有关缓冲区的错误,则请尝试使用 NetStream.bufferTime
属性更改缓冲区。
原地址:http://help.adobe.com/zh_CN/AIR/1.5/jslr/flash/events/NetStatusEvent.html
--------------------------------------------------------------------------------------------------------------
===============================================================
as连接FMS服务器报错状态汇总:
nc = new NetConnection(); nc.connect("rtmp://"+_root.host+"/"+_root.dir); //建立一个新数据流并连接到服务器 //---------------------------显示连接状态---------------------------// nc.onStatus = function(info) { if (info.code == "NetConnection.Call.Failed") { trace("连接状态: "+info.code); trace("NetConnection.call方法调用服务器端的方法或命令失败"); } else if (info.code == "NetConnection.Connect.AppShutdown") { trace("连接状态: "+info.code); trace("服务器端应用程序已经关闭(由于资源耗用过大等原因)或者服务器已经关闭"); } else if (info.code == "NetConnection.Connect.Closed") { trace("连接状态: "+info.code); trace("连接中断"); } else if (info.code == "NetConnection.Connect.Failed") { trace("连接状态: "+info.code); trace("连接失败"); } else if (info.code == "NetConnection.Connect.InvalidApp") { trace("连接状态: "+info.code); trace("指定的应用程序名称没有找到"); } else if (info.code == "NetConnection.Connect.Rejected") { trace("连接状态: "+info.code); trace("连接被拒绝"); } else if (info.code == "NetConnection.Connect.Success") { trace("连接状态: "+info.code); trace("连接成功"); } }; //---------------------------与服务器通讯---------------------------// var returnTimeObj = new Object(); var serverTim:Number; returnTimeObj.onResult = function(tim):Void { trace("请求的结果是影片时长:"+tim+" 秒"); serverTim = tim; //将函数内部变量赋值给局部变量以便以后引用 //如果返回时间为0表示此数据流为直播流 }; //client向server提交文件请求 nc.call("getStreamLength",returnTimeObj,_root.url); trace("客户端主正在向服务器提交对"+_root.url+".flv文件的请求"); //server呼叫client端 nc.msgFromServer = function(msg) { trace("服务端发来信息:"+msg); }; //---------------------------播放器部分---------------------------// in_ns = new NetStream(nc); _parent.mv_video.video_container.attachVideo(in_ns); //videoArea.attachAudio(in_ns); in_ns.setBufferTime(5);//定义缓冲时间(单位:秒) in_ns.play(_root.url);//开始播放 //---------------------------sink color---------------------------// var btnDefaultColor:String = "0x6D6D6D"; var btnActColor:String = "0x4EB4FF"; var barDefaultColor:String = "0xFFFFFF"; var barActColor:String = "0x4EB4FF"; //这里定义了按扭的颜色可自行修改 //---------------------------pause---------------------------// btn_pauseColor = new Color(btn_pause.btn_light01); btn_pause.onRollOver = function() { btn_pauseColor.setRGB(btnActColor); }; btn_pause.onRollOut = function() { btn_pauseColor.setRGB(btnDefaultColor); }; btn_pause.onRelease = function() { btn_pauseColor.setRGB(btnDefaultColor); in_ns.pause(); }; btn_pause.onReleaseOutside = btn_pause.onRelease; //---------------------------stop---------------------------// btn_stopColor = new Color(btn_stop.btn_light01); btn_stop.onRollOver = function() { btn_stopColor.setRGB(btnActColor); }; btn_stop.onRollOut = function() { btn_stopColor.setRGB(btnDefaultColor); }; btn_stop.onRelease = function() { btn_stopColor.setRGB(btnDefaultColor); in_ns.seek(0); in_ns.pause(true);//跳转起始时间并暂停 }; btn_stop.onReleaseOutside = btn_stop.onRelease; //---------------------------repetition---------------------------// var switchRepetition:Boolean = true; //定义为默认情况下循环播放 btn_repetitionColor = new Color(btn_repetition.btn_light01); btn_repetition.onRollOver = function() { btn_repetitionColor.setRGB(btnActColor); }; btn_repetition.onRollOut = function() { btn_repetitionColor.setRGB(btnDefaultColor); }; btn_repetition.onRelease = function() { btn_repetitionColor.setRGB(btnDefaultColor); if (switchRepetition == true) { switchRepetition = false; btn_repetition.shape_repetition.gotoAndStop(btn_repetition.shape_repetition._totalframes); } else { switchRepetition = true; btn_repetition.shape_repetition.gotoAndPlay(btn_repetition.shape_repetition._currentframe+1); } }; btn_repetition.onReleaseOutside = btn_repetition.onRelease; in_ns.onPlayStatus = function(info) { if (info.code == "NetStream.Play.Complete") { //检查影片是否播放完毕 if (switchRepetition == true) { in_ns.seek(0); in_ns.play();//如果需要循环播放便跳转起始时间并播放 } else { in_ns.seek(0); in_ns.pause(true);//否则跳转起始时间并暂停(注意默认情况下是循环的) } } }; //---------------------------fullscreen---------------------------// btn_fullscreenColor = new Color(btn_fullscreen.btn_light01); btn_fullscreen.onRollOver = function() { btn_fullscreenColor.setRGB(btnActColor); }; btn_fullscreen.onRollOut = function() { btn_fullscreenColor.setRGB(btnDefaultColor); }; btn_fullscreen.onRelease = function() { btn_fullscreenColor.setRGB(btnDefaultColor); //启动全屏(这里我没写全屏函数到底是用JS方法还是用FLASH内部函数办法根据需要你们自己看着办吧) }; btn_fullscreen.onReleaseOutside = btn_fullscreen.onRelease; //---------------------------help---------------------------// btn_helpColor = new Color(btn_help.btn_light01); btn_help.onRollOver = function() { btn_helpColor.setRGB(btnActColor); }; btn_help.onRollOut = function() { btn_helpColor.setRGB(btnDefaultColor); }; btn_help.onRelease = function() { btn_helpColor.setRGB(btnDefaultColor); //弹出播放帮助页(要弹什么版权页或者说明页你们自己看着办或者你也可以播放你自己做的MC) }; btn_help.onReleaseOutside = btn_help.onRelease; //---------------------------容错判断---------------------------// in_ns.onStatus = function(info) { if (info.code == "NetStream.Buffer.Full") { trace("播放状态: "+info.code); trace("缓冲区已满"); btn_pause.shape_play._visible = true; btn_pause.shape_pause._visible = false; } else if (info.code == "NetStream.Buffer.Empty") { trace("播放状态: "+info.code); trace("数据缓冲区为空"); btn_pause.shape_play._visible = false; btn_pause.shape_pause._visible = true; } else if (info.code == "NetStream.Failed") { trace("播放状态: "+info.code); trace("传输中有错误发生"); //无需反馈 } else if (info.code == "NetStream.Pause.Notify") { trace("播放状态: "+info.code); trace("播放暂停"); btn_pause.shape_play._visible = false; btn_pause.shape_pause._visible = true; } else if (info.code == "NetStream.Play.Failed") { trace("播放状态: "+info.code); trace("播放出错"); //严重错误 } else if (info.code == "NetStream.Play.PublishNotify") { trace("播放状态: "+info.code); trace("发布开始,信息已经发送到所有订阅者"); //无需反馈 } else if (info.code == "NetStream.Play.Reset") { trace("播放状态: "+info.code); trace("播放列表重置"); //无需反馈 } else if (info.code == "NetStream.Play.Start") { trace("播放状态: "+info.code); trace("播放开始"); btn_pause.shape_play._visible = false; btn_pause.shape_pause._visible = true; } else if (info.code == "NetStream.Play.Stop") { trace("播放状态: "+info.code); trace("播放停止"); //无需反馈 } else if (info.code == "NetStream.Play.StreamNotFound") { trace("播放状态: "+info.code); trace("播放的实时流或文件不存在"); //严重错误 } else if (info.code == "NetStream.Play.UnpublishNotify") { trace("播放状态: "+info.code); trace("发布停止,信息已经发送到所有订阅者"); //无需反馈 } else if (info.code == "NetStream.Publish.BadName") { trace("播放状态: "+info.code); trace("发布的数据流已经被发布"); //无需反馈 } else if (info.code == "NetStream.Publish.Idle") { trace("播放状态: "+info.code); trace("发布者闲置过长"); //严重错误 } else if (info.code == "NetStream.Publish.Start") { trace("播放状态: "+info.code); trace("发布开始"); btn_pause.shape_play._visible = false; btn_pause.shape_pause._visible = true; } else if (info.code == "NetStream.Record.Failed") { trace("播放状态: "+info.code); trace("录制文件出错"); //严重错误 } else if (info.code == "NetStream.Record.NoAccess") { trace("播放状态: "+info.code); trace("没有足够的文件访问权限"); //严重错误 } else if (info.code == "NetStream.Record.Start") { trace("播放状态: "+info.code); trace("文件录制开始"); //无需反馈 } else if (info.code == "NetStream.Record.Stop") { trace("播放状态: "+info.code); trace("录制暂停"); //无需反馈 } else if (info.code == "NetStream.Seek.Failed") { trace("播放状态: "+info.code); trace("数据流定位出错"); //严重错误 } else if (info.code == "NetStream.Seek.Notify") { trace("播放状态: "+info.code); trace("数据搜索定位成功"); btn_pause.shape_play._visible = false; btn_pause.shape_pause._visible = true; } else if (info.code == "NetStream.Unpause.Notify") { trace("播放状态: "+info.code); trace("恢复播放"); btn_pause.shape_play._visible = false; btn_pause.shape_pause._visible = true; } else if (info.code == "NetStream.Unpublish.Success") { trace("播放状态: "+info.code); trace("停止发布"); //无需反馈 } }; //---------------------------time progress bar---------------------------// time_barColor = new Color(btn_time.time_bar); var timeProgressAct:Boolean = false; var inTim:Number; var barLeft = btn_time.time_progress._x; var barRight = btn_time.time_progress._x+btn_time.time_progress._width-btn_time.time_bar._width; var barBottom = barTop=btn_time.time_bar._y; //确定slider可移动的左右及上下边界 btn_time.time_bar.onRollOver = function() { time_barColor.setRGB(barActColor); }; btn_time.time_bar.onRollOut = function() { time_barColor.setRGB(barDefaultColor); }; btn_time.time_bar.onPress = function() { time_barColor.setRGB(barActColor); this.startDrag(false,barLeft,barTop,barRight,barBottom); timeProgressAct = true; }; btn_time.time_bar.onRelease = function() { time_barColor.setRGB(barDefaultColor); this.stopDrag(); inTim = btn_time.time_bar._x*serverTim/(barRight-barLeft); trace(serverTim); in_ns.seek(inTim); in_ns.play();//计算并且跳转到和滑块位置对应的播放时间 timeProgressAct = false; //trace("目前移动到"+btn_time.time_bar._x+"位置"); //trace("影片时长"+tim); //trace("inTime="+inTim); //trace("in_ns.time="+in_ns.time); }; btn_time.time_bar.onReleaseOutside = btn_time.time_bar.onRelease; //---------------------------time container---------------------------// function convertTime(sec, role) { //定义格式化时间用的函数并且根据role的需要输出不同的数据 var sec:Number; var role:String; sec = Math.floor(sec); var day = (Math.floor(sec/3600/24)<10) ? "0"+Math.floor(sec/3600/24) : Math.floor(sec/3600/24); var hour = (Math.floor(sec%(3600*24)/3600)<10) ? "0"+Math.floor(sec%(3600*24)/3600) : Math.floor(sec%(3600*24)/3600); var minute = (Math.floor(sec%3600/60)<10) ? "0"+Math.floor(sec%3600/60) : Math.floor(sec%3600/60); var second = (sec%60<10) ? "0"+sec%60 : sec%60; if ((day>0) || (hour>0) || (minute>0) || (second>0)) { return hour+":"+minute+":"+second; } else if (role != "server") { return "00:00:00"; } else if (role="server") { return "Live"; } } onEnterFrame = function () { btn_time.time_container.time_text = convertTime(in_ns.time, "client")+"/x20"+"/"+"/x20"+convertTime(serverTim, "server"); if (timeProgressAct == false) { btn_time.time_bar._x = in_ns.time/serverTim*(barRight-barLeft); } if ((in_ns.bufferLength>0) && (in_ns.bufferTime>=in_ns.bufferLength) && (btn_pause.shape_pause._visible == true)) { //trace("已经缓冲"+in_ns.bufferLength+"秒"); //播放缓冲动画(自己搞个带LOGO的版权动画出来吧我已经把我们公司的去掉了) } else { //trace("已经缓冲"+in_ns.bufferLength+"秒"); //隐藏缓冲动画 } };
http://blog.csdn.net/swort_177/article/details/5387824