diff --git a/trunk/research/players/js/srs.js b/trunk/research/players/js/srs.js deleted file mode 100644 index cc89c4f8a..000000000 --- a/trunk/research/players/js/srs.js +++ /dev/null @@ -1,793 +0,0 @@ -////////////////////////////////////////////////////////////////////////////////// -////////////////////////////////////////////////////////////////////////////////// -////////////////////////////////////////////////////////////////////////////////// - -/** -* player specified size. -*/ -function srs_get_player_modal() { return 740; } -function srs_get_player_width() { return srs_get_player_modal() - 30; } -function srs_get_player_height() { return srs_get_player_width() * 9 / 19; } - -// to query the swf anti cache. -function srs_get_version_code() { return "1.9"; } -// get the default vhost for players. -function srs_get_player_vhost() { return "players"; } -// the api server port, for chat room. -function srs_get_api_server_port() { return 8085; } -// get the stream published to vhost, -// generally we need to transcode the stream to support HLS and filters. -// for example, src_vhost is "players", we transcode stream to vhost "players_pub". -// if not equals to the player vhost, return the orignal vhost. -function srs_get_player_publish_vhost(src_vhost) { return (src_vhost != srs_get_player_vhost())? src_vhost:(src_vhost + "_pub"); } -// for chat, use rtmp only vhost, low latecy, without gop cache. -function srs_get_player_chat_vhost(src_vhost) { return (src_vhost != srs_get_player_vhost())? src_vhost:(src_vhost + "_pub_rtmp"); } - -////////////////////////////////////////////////////////////////////////////////// -////////////////////////////////////////////////////////////////////////////////// -////////////////////////////////////////////////////////////////////////////////// -/** -* padding the output. -* padding(3, 5, '0') is 00003 -* padding(3, 5, 'x') is xxxx3 -* @see http://blog.csdn.net/win_lin/article/details/12065413 -*/ -function padding(number, length, prefix) { - if(String(number).length >= length){ - return String(number); - } - return padding(prefix+number, length, prefix); -} - -/** -* update the navigator, add same query string. -*/ -function update_nav() { - $("#nav_srs_player").attr("href", "srs_player.html" + window.location.search); - $("#nav_srs_publisher").attr("href", "srs_publisher.html" + window.location.search); - $("#nav_srs_chat").attr("href", "srs_chat.html" + window.location.search); - $("#nav_srs_bwt").attr("href", "srs_bwt.html" + window.location.search); - $("#nav_jwplayer6").attr("href", "jwplayer6.html" + window.location.search); - $("#nav_osmf").attr("href", "osmf.html" + window.location.search); - $("#nav_vlc").attr("href", "vlc.html" + window.location.search); -} - -/** -* log specified, there must be a log element as: - -
- - Usage: - 创建会议室,或者加入会议室 -
-*/ -function info(desc) { - $("#txt_log").addClass("alert-info").removeClass("alert-error").removeClass("alert-warn"); - $("#txt_log_title").text("Info:"); - $("#txt_log_msg").text(desc); -} -function warn(code, desc) { - $("#txt_log").removeClass("alert-info").removeClass("alert-error").addClass("alert-warn"); - $("#txt_log_title").text("Warn:"); - $("#txt_log_msg").text("code: " + code + ", " + desc); -} -function error(code, desc) { - $("#txt_log").removeClass("alert-info").addClass("alert-error").removeClass("alert-warn"); - $("#txt_log_title").text("Error:"); - $("#txt_log_msg").text("code: " + code + ", " + desc); -} - -/** -* parse the query string to object. -*/ -function parse_query_string(){ - var obj = {}; - - // parse the host(hostname:http_port), pathname(dir/filename) - obj.host = window.location.host; - obj.hostname = window.location.hostname; - obj.http_port = (window.location.port == "")? 80:window.location.port; - obj.pathname = window.location.pathname; - if (obj.pathname.lastIndexOf("/") <= 0) { - obj.dir = "/"; - obj.filename = ""; - } else { - obj.dir = obj.pathname.substr(0, obj.pathname.lastIndexOf("/")); - obj.filename = obj.pathname.substr(obj.pathname.lastIndexOf("/")); - } - - // parse the query string. - var query_string = String(window.location.search).replace(" ", "").split("?")[1]; - if(query_string == undefined){ - return obj; - } - - var queries = query_string.split("&"); - $(queries).each(function(){ - var query = this.split("="); - obj[query[0]] = query[1]; - }); - - return obj; -} - -/** -@param server the ip of server. default to window.location.hostname -@param vhost the vhost of rtmp. default to window.location.hostname -@param port the port of rtmp. default to 1935 -@param app the app of rtmp. default to live. -@param stream the stream of rtmp. default to livestream. -*/ -function build_default_rtmp_url() { - var query = parse_query_string(); - - var server = (query.server == undefined)? window.location.hostname:query.server; - var port = (query.port == undefined)? 1935:query.port; - var vhost = (query.vhost == undefined)? window.location.hostname:query.vhost; - var app = (query.app == undefined)? "live":query.app; - var stream = (query.stream == undefined)? "livestream":query.stream; - - if (server == vhost || vhost == "") { - return "rtmp://" + server + ":" + port + "/" + app + "/" + stream; - } else { - return "rtmp://" + server + ":" + port + "/" + app + "...vhost..." + vhost + "/" + stream; - } -} -// for the chat to init the publish url. -function build_default_publish_rtmp_url() { - var query = parse_query_string(); - - var server = (query.server == undefined)? window.location.hostname:query.server; - var port = (query.port == undefined)? 1935:query.port; - var vhost = (query.vhost == undefined)? window.location.hostname:query.vhost; - var app = (query.app == undefined)? "live":query.app; - var stream = (query.stream == undefined)? "livestream":query.stream; - - if (server == vhost || vhost == "") { - return "rtmp://" + server + ":" + port + "/" + app + "/" + stream; - } else { - vhost = srs_get_player_chat_vhost(vhost); - return "rtmp://" + server + ":" + port + "/" + app + "...vhost..." + vhost + "/" + stream; - } -} - -/** -@param server the ip of server. default to window.location.hostname -@param vhost the vhost of hls. default to window.location.hostname -@param hls_vhost the vhost of hls. override the server if specified. -@param hls_port the port of hls. default to window.location.port -@param app the app of hls. default to live. -@param stream the stream of hls. default to livestream. -*/ -function build_default_hls_url() { - var query = parse_query_string(); - - // for http, use hls_vhost to override server if specified. - var server = window.location.hostname; - if (query.server != undefined) { - server = query.server; - } else if (query.hls_vhost != undefined) { - server = query.hls_vhost; - } - - var port = (query.hls_port == undefined)? window.location.port:query.hls_port; - var app = (query.app == undefined)? "live":query.app; - var stream = (query.stream == undefined)? "livestream":query.stream; - - if (port == "" || port == null || port == undefined) { - port = 80; - } - - return "http://" + server + ":" + port + "/" + app + "/" + stream + ".m3u8"; -} - -/** -* parse the rtmp url, -* for example: rtmp://demo.srs.com:1935/live...vhost...players/livestream -* @return object {server, port, vhost, app, stream} -*/ -function srs_parse_rtmp_url(rtmp_url) { - // @see: http://stackoverflow.com/questions/10469575/how-to-use-location-object-to-parse-url-without-redirecting-the-page-in-javascri - var a = document.createElement("a"); - a.href = rtmp_url.replace("rtmp://", "http://"); - - var vhost = a.hostname; - var port = (a.port == "")? "1935":a.port; - var app = a.pathname.substr(1, a.pathname.lastIndexOf("/") - 1); - var stream = a.pathname.substr(a.pathname.lastIndexOf("/") + 1); - - // parse the vhost in the params of app, that srs supports. - app = app.replace("...vhost...", "?vhost="); - if (app.indexOf("?") >= 0) { - var params = app.substr(app.indexOf("?")); - app = app.substr(0, app.indexOf("?")); - - if (params.indexOf("vhost=") > 0) { - vhost = params.substr(params.indexOf("vhost=") + "vhost=".length); - if (vhost.indexOf("&") > 0) { - vhost = vhost.substr(0, vhost.indexOf("&")); - } - } - } - - var ret = { - server: a.hostname, port: port, - vhost: vhost, app: app, stream: stream - }; - - return ret; -} - -/** -* initialize the page. -* @param rtmp_url the div id contains the rtmp stream url to play -* @param hls_url the div id contains the hls stream url to play -* @param modal_player the div id contains the modal player -*/ -function srs_init(rtmp_url, hls_url, modal_player) { - update_nav(); - - if (rtmp_url) { - $(rtmp_url).val(build_default_rtmp_url()); - } - if (hls_url) { - $(hls_url).val(build_default_hls_url()); - } - if (modal_player) { - $(modal_player).width(srs_get_player_modal() + "px"); - $(modal_player).css("margin-left", "-" + srs_get_player_modal() / 2 +"px"); - } -} - -// for the chat to init the publish url. -function srs_init_publish(rtmp_url) { - update_nav(); - - if (rtmp_url) { - $(rtmp_url).val(build_default_publish_rtmp_url()); - } -} - -// for bw to init url -// url: scheme://host:port/path?query#fragment -function srs_init_bwt(rtmp_url, hls_url) { - update_nav(); - - if (rtmp_url) { - //var query = parse_query_string(); - var search_filed = String(window.location.search).replace(" ", "").split("?")[1]; - $(rtmp_url).val("rtmp://" + window.location.host + ":" + 1935 + "/app?" + search_filed); - } - if (hls_url) { - $(hls_url).val(build_default_hls_url()); - } -} - -function srs_bwt_check_url(url) { - if (url.indexOf("key") != -1 && url.indexOf("vhost") != -1) { - return true; - } - - return false; -} - -function srs_bwt_build_default_url() { - var url_default = "rtmp://" + window.location.host + ":" + 1935 + "/app?key=35c9b402c12a7246868752e2878f7e0e&vhost=bandcheck.srs.com"; - return url_default; -} - -/** -* when publisher ready, init the page elements. -*/ -function srs_publisher_initialize_page( - cameras, microphones, - sl_cameras, sl_microphones, sl_vcodec, sl_profile, sl_level, sl_gop, sl_size, sl_fps, sl_bitrate -) { - $(sl_cameras).empty(); - for (var i = 0; i < cameras.length; i++) { - $(sl_cameras).append("