1
0
Fork 0
mirror of https://github.com/ossrs/srs.git synced 2025-03-09 15:49:59 +00:00

use xpsid X-Playback-Session-Id to more useful.

This commit is contained in:
winlin 2016-03-19 19:48:01 +08:00
parent b2bd63e833
commit 2492562d25
2 changed files with 33 additions and 2 deletions

View file

@ -793,7 +793,7 @@ class SrsTsHanlder implements ISrsTsHandler
packet.writeUnsignedInt(size);
if (false) {
_log.info("mux flv type={0}, time={1}, size={3}", type, timestamp, dts, packet.length);
_log.info("FLV: mux flv type={0}, time={1}, size={3}", type, timestamp, dts, packet.length);
} else {
_log.debug("mux flv type={0}, time={1}, size={3}", type, timestamp, dts, packet.length);
}

View file

@ -19,6 +19,7 @@ package
import flash.net.URLLoader;
import flash.net.URLLoaderDataFormat;
import flash.net.URLRequest;
import flash.net.URLRequestHeader;
import flash.net.URLRequestMethod;
import flash.net.URLStream;
import flash.net.URLVariables;
@ -47,6 +48,26 @@ package
private var owner:srs_player = null;
private var hls:Hls = null; // parse m3u8 and ts
// the uuid similar to Safari, to identify this play session.
// @see https://github.com/winlinvip/srs-plus/blob/bms/trunk/src/app/srs_app_http_stream.cpp#L45
public var XPlaybackSessionId:String = createRandomIdentifier(32);
private function createRandomIdentifier(length:uint, radix:uint = 61):String {
var characters:Array = new Array('0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q',
'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h',
'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y',
'z');
var id:Array = new Array();
radix = (radix > 61) ? 61 : radix;
while (length--) {
id.push(characters[randomIntegerWithinRange(0, radix)]);
}
return id.join('');
}
private function randomIntegerWithinRange(min:int, max:int):int {
return Math.floor(Math.random() * (1 + max - min) + min);
}
// callback for hls.
public var flvHeader:ByteArray = null;
@ -68,6 +89,10 @@ package
return;
}
if (!flvHeader) {
return;
}
var s:NetStream = media_stream;
s.appendBytes(flv);
log("FLV: ts " + uri + " parsed to flv " + flv.length + " bytes");
@ -265,8 +290,14 @@ package
completed(stream);
});
// we set to the query.
uri += ((uri.indexOf("?") == -1)? "?":"&") + "shp_xpsid=" + XPlaybackSessionId;
var r:URLRequest = new URLRequest(uri);
// seems flash not allow set this header.
r.requestHeaders.push(new URLRequestHeader("X-Playback-Session-Id", XPlaybackSessionId));
log("start download " + uri);
url.load(new URLRequest(uri));
url.load(r);
}
private function log(msg:String):void {