正在显示
2 个修改的文件
包含
33 行增加
和
2 行删除
| @@ -793,7 +793,7 @@ class SrsTsHanlder implements ISrsTsHandler | @@ -793,7 +793,7 @@ class SrsTsHanlder implements ISrsTsHandler | ||
| 793 | packet.writeUnsignedInt(size); | 793 | packet.writeUnsignedInt(size); |
| 794 | 794 | ||
| 795 | if (false) { | 795 | if (false) { |
| 796 | - _log.info("mux flv type={0}, time={1}, size={3}", type, timestamp, dts, packet.length); | 796 | + _log.info("FLV: mux flv type={0}, time={1}, size={3}", type, timestamp, dts, packet.length); |
| 797 | } else { | 797 | } else { |
| 798 | _log.debug("mux flv type={0}, time={1}, size={3}", type, timestamp, dts, packet.length); | 798 | _log.debug("mux flv type={0}, time={1}, size={3}", type, timestamp, dts, packet.length); |
| 799 | } | 799 | } |
| @@ -19,6 +19,7 @@ package | @@ -19,6 +19,7 @@ package | ||
| 19 | import flash.net.URLLoader; | 19 | import flash.net.URLLoader; |
| 20 | import flash.net.URLLoaderDataFormat; | 20 | import flash.net.URLLoaderDataFormat; |
| 21 | import flash.net.URLRequest; | 21 | import flash.net.URLRequest; |
| 22 | + import flash.net.URLRequestHeader; | ||
| 22 | import flash.net.URLRequestMethod; | 23 | import flash.net.URLRequestMethod; |
| 23 | import flash.net.URLStream; | 24 | import flash.net.URLStream; |
| 24 | import flash.net.URLVariables; | 25 | import flash.net.URLVariables; |
| @@ -47,6 +48,26 @@ package | @@ -47,6 +48,26 @@ package | ||
| 47 | 48 | ||
| 48 | private var owner:srs_player = null; | 49 | private var owner:srs_player = null; |
| 49 | private var hls:Hls = null; // parse m3u8 and ts | 50 | private var hls:Hls = null; // parse m3u8 and ts |
| 51 | + | ||
| 52 | + // the uuid similar to Safari, to identify this play session. | ||
| 53 | + // @see https://github.com/winlinvip/srs-plus/blob/bms/trunk/src/app/srs_app_http_stream.cpp#L45 | ||
| 54 | + public var XPlaybackSessionId:String = createRandomIdentifier(32); | ||
| 55 | + private function createRandomIdentifier(length:uint, radix:uint = 61):String { | ||
| 56 | + var characters:Array = new Array('0', '1', '2', '3', '4', '5', '6', '7', '8', '9', | ||
| 57 | + 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', | ||
| 58 | + 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', | ||
| 59 | + 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', | ||
| 60 | + 'z'); | ||
| 61 | + var id:Array = new Array(); | ||
| 62 | + radix = (radix > 61) ? 61 : radix; | ||
| 63 | + while (length--) { | ||
| 64 | + id.push(characters[randomIntegerWithinRange(0, radix)]); | ||
| 65 | + } | ||
| 66 | + return id.join(''); | ||
| 67 | + } | ||
| 68 | + private function randomIntegerWithinRange(min:int, max:int):int { | ||
| 69 | + return Math.floor(Math.random() * (1 + max - min) + min); | ||
| 70 | + } | ||
| 50 | 71 | ||
| 51 | // callback for hls. | 72 | // callback for hls. |
| 52 | public var flvHeader:ByteArray = null; | 73 | public var flvHeader:ByteArray = null; |
| @@ -68,6 +89,10 @@ package | @@ -68,6 +89,10 @@ package | ||
| 68 | return; | 89 | return; |
| 69 | } | 90 | } |
| 70 | 91 | ||
| 92 | + if (!flvHeader) { | ||
| 93 | + return; | ||
| 94 | + } | ||
| 95 | + | ||
| 71 | var s:NetStream = media_stream; | 96 | var s:NetStream = media_stream; |
| 72 | s.appendBytes(flv); | 97 | s.appendBytes(flv); |
| 73 | log("FLV: ts " + uri + " parsed to flv " + flv.length + " bytes"); | 98 | log("FLV: ts " + uri + " parsed to flv " + flv.length + " bytes"); |
| @@ -265,8 +290,14 @@ package | @@ -265,8 +290,14 @@ package | ||
| 265 | completed(stream); | 290 | completed(stream); |
| 266 | }); | 291 | }); |
| 267 | 292 | ||
| 293 | + // we set to the query. | ||
| 294 | + uri += ((uri.indexOf("?") == -1)? "?":"&") + "shp_xpsid=" + XPlaybackSessionId; | ||
| 295 | + var r:URLRequest = new URLRequest(uri); | ||
| 296 | + // seems flash not allow set this header. | ||
| 297 | + r.requestHeaders.push(new URLRequestHeader("X-Playback-Session-Id", XPlaybackSessionId)); | ||
| 298 | + | ||
| 268 | log("start download " + uri); | 299 | log("start download " + uri); |
| 269 | - url.load(new URLRequest(uri)); | 300 | + url.load(r); |
| 270 | } | 301 | } |
| 271 | 302 | ||
| 272 | private function log(msg:String):void { | 303 | private function log(msg:String):void { |
-
请 注册 或 登录 后发表评论