Esempio n. 1
0
  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;
  }