public static String createMediaUrl(HashMap<String, String> vars, int format, Channel ch) { String rUrl = vars.get("url"); if (empty(rUrl) || Channels.noPlay()) // what do we do? return null; int rtmpMet = Channels.rtmpMethod(); String type = vars.get("__type__"); Channels.debug("create media url entry " + rUrl + " format " + format + " type " + type); if (rUrl.startsWith("http")) { if ((format != Format.VIDEO) || (rtmpMet == Channels.RTMP_MAGIC_TOKEN)) return rUrl; // rUrl="navix://channel?url="+escape(rUrl); rUrl = "channel?url=" + escape(rUrl); String agent = vars.get("agent"); if (empty(agent)) agent = ChannelUtil.defAgentString; rUrl = append(rUrl, "&agent=", escape(agent)); if (!empty(vars.get("referer"))) rUrl = append(rUrl, "&referer=", escape(vars.get("referer"))); String sub = vars.get("subtitle"); if (!empty(sub)) { // we got subtitles rUrl = "subs://" + rUrl; // lot of things to append here rUrl = addSubs(rUrl, sub); } else if (!empty(type) && type.equals("navix")) rUrl = "navix://" + rUrl; else rUrl = vars.get("url"); Channels.debug("return media url " + rUrl); return rUrl; } if (!empty(type) && type.equals("RTMPDUMP")) { Channels.debug("rmtpdump spec " + rUrl); String[] args = rUrl.split("!!!"); String res = ""; for (int i = 0; i < args.length; i++) { if (empty(args[i])) continue; String[] kv = args[i].split("=", 2); if (kv.length < 2) continue; if (kv[0].equals("flv")) continue; res = append(res, "&", kv[0] + "=" + escape(kv[1])); } rUrl = "rtmpdump://channel?" + res; String sub = vars.get("subtitle"); if (!empty(sub)) { // we got subtitles // lot of things to append here rUrl = addSubs(rUrl, sub); } Channels.debug("return media url rtmpdump spec " + rUrl); return rUrl; } String[] s = rUrl.split(" "); if (s.length > 1) { // This is likely rtmp from navix rUrl = s[0]; // first one is the url for (int i = 1; i < s.length; i++) { String[] ss = s[i].split("=", 2); if (ss.length < 2) vars.put(ss[0].toLowerCase(), ""); else vars.put(ss[0].toLowerCase(), ss[1]); } } if (!rtmpStream(rUrl)) // type is sopcast etc. return rUrl; if (rUrl.startsWith("rtmpdump://")) return rUrl; switch (rtmpMet) { case Channels.RTMP_MAGIC_TOKEN: rUrl = ChannelUtil.append(rUrl, "!!!pms_ch_dash_y!!!", vars.get("playpath")); rUrl = ChannelUtil.append(rUrl, "!!!pms_ch_dash_w!!!", vars.get("swfVfy")); break; case Channels.RTMP_DUMP: Channels.debug("rtmpdump method"); rUrl = "rtmpdump://channel?-r=" + escape(rUrl); if (!empty(vars.get("live"))) rUrl = append(rUrl, "", "&-v"); rUrl = ChannelUtil.append(rUrl, "&-y=", escape(vars.get("playpath"))); rUrl = ChannelUtil.append(rUrl, "&--swfVfy=", escape(vars.get("swfVfy"))); rUrl = ChannelUtil.append(rUrl, "&--swfVfy=", escape(vars.get("swfvfy"))); rUrl = ChannelUtil.append(rUrl, "&-s=", escape(vars.get("swfplayer"))); rUrl = ChannelUtil.append(rUrl, "&-a=", escape(vars.get("app"))); rUrl = ChannelUtil.append(rUrl, "&-p=", escape(vars.get("pageurl"))); rUrl = ChannelUtil.append(rUrl, "&-s=", escape(vars.get("swfurl"))); String sub = vars.get("subtitle"); if (!empty(sub)) { // we got subtitles // lot of things to append here rUrl = addSubs(rUrl, sub); } break; default: rUrl = vars.get("url"); break; } Channels.debug("return media url " + rUrl); return rUrl; }