From b3c13f2550e0b28f12434c77698ae421ce752745 Mon Sep 17 00:00:00 2001 From: winlin Date: Sat, 12 Mar 2016 20:53:37 +0800 Subject: [PATCH] refine the bwtc, to compatible with bms4. --- .../players/srs_bwt/.actionScriptProperties | 1 + .../players/srs_bwt/release/srs_bwt.swf | Bin 6528 -> 7180 bytes .../players/srs_bwt/src/SrsBandwidth.as | 73 ++++++++++++++---- trunk/research/players/srs_bwt/src/srs_bwt.as | 31 +++++--- 4 files changed, 79 insertions(+), 26 deletions(-) diff --git a/trunk/research/players/srs_bwt/.actionScriptProperties b/trunk/research/players/srs_bwt/.actionScriptProperties index 62ecf7f78..1a4d9fa33 100755 --- a/trunk/research/players/srs_bwt/.actionScriptProperties +++ b/trunk/research/players/srs_bwt/.actionScriptProperties @@ -38,3 +38,4 @@ + diff --git a/trunk/research/players/srs_bwt/release/srs_bwt.swf b/trunk/research/players/srs_bwt/release/srs_bwt.swf index 6f5a4c5f9377631056275f5dcbff16f6551a0913..d9c9330c479bd526e715b7bf434188711db1b728 100755 GIT binary patch literal 7180 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 OzF&{6|9=4;N(RX#iZkf| literal 6528 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 diff --git a/trunk/research/players/srs_bwt/src/SrsBandwidth.as b/trunk/research/players/srs_bwt/src/SrsBandwidth.as index 7c5f3ce2f..b88724638 100755 --- a/trunk/research/players/srs_bwt/src/SrsBandwidth.as +++ b/trunk/research/players/srs_bwt/src/SrsBandwidth.as @@ -25,6 +25,7 @@ package import flash.events.NetStatusEvent; import flash.external.ExternalInterface; import flash.net.NetConnection; + import flash.net.NetStream; import flash.net.ObjectEncoding; import flash.utils.clearTimeout; import flash.utils.setTimeout; @@ -92,7 +93,7 @@ package * srs_server: the srs server info. * srs_primary: the srs primary authors info. * srs_authors: the srs authors info. - * srs_id: the tracable log id, to direclty grep the log.. + * srs_id: the tracable log id, to direclty grep the log. * srs_pid: the srs process id, to direclty grep the log. * srs_server_ip: the srs server ip, where client connected at. * @param as_on_complete, function(start_time:Number, end_time:Number, play_kbps:Number, publish_kbps:Number, play_bytes:Number, publish_bytes:Number, play_time:Number, publish_time:Number):void, where @@ -280,6 +281,8 @@ package * check/test with server. */ private var connection:NetConnection = null; + // for bms4, use stream to play then do bandwidth test. + private var stream:NetStream = null; /** * use timeout to sendout publish call packets. @@ -293,7 +296,7 @@ package */ private function system_on_js_ready():void { if (!flash.external.ExternalInterface.available) { - trace("js not ready, try later."); + log("js not ready, try later."); flash.utils.setTimeout(this.system_on_js_ready, 100); return; } @@ -318,6 +321,7 @@ package __on_progress_change(0); // init connection + log("create connection for bandwidth check"); connection = new NetConnection; connection.objectEncoding = ObjectEncoding.AMF0; connection.client = { @@ -350,7 +354,7 @@ package private function onSrsBandCheckStartPlayBytes(evt:Object):void{ var duration_ms:Number = evt.duration_ms; var interval_ms:Number = evt.interval_ms; - trace("start play test, duration=" + duration_ms + ", interval=" + interval_ms); + log("start play test, duration=" + duration_ms + ", interval=" + interval_ms); connection.call("onSrsBandCheckStartingPlayBytes", null); __on_status_change(SrsBandwidth.StatusSrsBwtcPlayStart); @@ -482,8 +486,9 @@ package * get NetConnection NetStatusEvent */ private function onStatus(evt:NetStatusEvent): void { - trace(evt.info.code); + log(evt.info.code); + var srs_version:String = null; if (evt.info.hasOwnProperty("data") && evt.info.data) { if (evt.info.data.hasOwnProperty("srs_server")) { srs_server = evt.info.data.srs_server; @@ -503,6 +508,9 @@ package if (evt.info.data.hasOwnProperty("srs_server_ip")) { srs_server_ip = evt.info.data.srs_server_ip; } + if (evt.info.data.hasOwnProperty("srs_version")) { + srs_version = evt.info.data.srs_version; + } if (this.as_on_srs_info != null) { this.as_on_srs_info(srs_server, srs_primary, srs_authors, srs_id, srs_pid, srs_server_ip); @@ -511,16 +519,46 @@ package flash.external.ExternalInterface.call(this.js_on_srs_info, this.js_id, srs_server, srs_primary, srs_authors, srs_id, srs_pid, srs_server_ip); } - } - if (evt.info.code) { - __on_status_change(evt.info.code); - } - switch(evt.info.code){ - case "NetConnection.Connect.Success": - __on_progress_change(8); - break; - } - + } + + var e:NetStatusEvent = evt; + var foo:Function = function():void{ + var evt:NetStatusEvent = e; + if (evt.info.code) { + __on_status_change(evt.info.code); + } + switch(evt.info.code){ + case "NetConnection.Connect.Success": + __on_progress_change(8); + break; + } + }; + foo(); + + // for bms4, play stream to trigger the bandwidth check. + if (evt.info.code != "NetConnection.Connect.Success") { + return; + } + if (stream != null) { + return; + } + + var is_bms:Boolean = false; + if (srs_server.indexOf("BMS/") == 0 || srs_server.indexOf("UPYUN/") == 0) { + is_bms = true; + } + if (parseInt(srs_version.charAt(0)) >= 4 && is_bms) { + stream = new NetStream(connection); + stream.addEventListener(NetStatusEvent.NET_STATUS, function(evt:NetStatusEvent):void{ + log(evt.info.code); + + if (evt.info.code == "NetStream.Play.Start") { + } + }); + stream.play("test"); + log("play stream for " + srs_server + " " + srs_version); + return; + } } /** @@ -544,5 +582,12 @@ package code, data); } } + + private function log(msg:String):void { + trace(msg); + if (ExternalInterface.available) { + ExternalInterface.call("console.log", msg); + } + } } } diff --git a/trunk/research/players/srs_bwt/src/srs_bwt.as b/trunk/research/players/srs_bwt/src/srs_bwt.as index 5a9ef89b7..5420b6060 100755 --- a/trunk/research/players/srs_bwt/src/srs_bwt.as +++ b/trunk/research/players/srs_bwt/src/srs_bwt.as @@ -121,13 +121,13 @@ package // for directly run swf. if (!conf.id) { - trace("directly run swf, load default url: " + this.default_url); + log("directly run swf, load default url: " + this.default_url); this.bandwidth.check_bandwidth(this.default_url); } } private function on_progress(percent:Number):void { - trace("progress:" + percent + "%"); + log("progress:" + percent + "%"); } private function update_context_items( srs_server:String, srs_primary:String, srs_authors:String, @@ -156,31 +156,31 @@ package contextMenu.customItems = customItems; } public function on_status_change(code:String, data:String): void { - trace(code); + log(code); switch(code){ case "NetConnection.Connect.Failed": - trace("连接服务器失败!"); + log("连接服务器失败!"); break; case "NetConnection.Connect.Rejected": - trace("服务器拒绝连接!"); + log("服务器拒绝连接!"); break; case "NetConnection.Connect.Success": - trace("连接服务器成功!"); + log("连接服务器成功!"); break; case SrsBandwidth.StatusSrsBwtcPlayStart: - trace("开始测试下行带宽"); + log("开始测试下行带宽"); break; case SrsBandwidth.StatusSrsBwtcPlayStop: - trace("下行带宽测试完毕," + data + "kbps,开始测试上行带宽。"); + log("下行带宽测试完毕," + data + "kbps,开始测试上行带宽。"); break; case SrsBandwidth.StatusSrsBwtcPublishStart: - trace("开始测试上行带宽"); + log("开始测试上行带宽"); break; case SrsBandwidth.StatusSrsBwtcPublishStop: - trace("上行带宽测试完毕," + data + "kbps,"); + log("上行带宽测试完毕," + data + "kbps,"); break; case "NetConnection.Connect.Closed": - trace("连接已断开!"); + log("连接已断开!"); break; } } @@ -190,7 +190,14 @@ package ):void { var status:String = "检测结束: 上行: " + publish_kbps + " kbps" + " 下行: " + play_kbps + " kbps" + " 测试时间: " + Number((end_time - start_time) / 1000).toFixed(1) + " 秒"; - trace(status); + log(status); } + + private function log(msg:String):void { + trace(msg); + if (ExternalInterface.available) { + ExternalInterface.call("console.log", msg); + } + } } }