Example #1
0
        public JsonResult CreateStreamCaster(string deviceId, SrsStreamCasterConfClass streamcaster)
        {
            ResponseStruct rss = CommonFunctions.CheckParams(new object[] { deviceId, streamcaster });

            if (rss.Code != ErrorNumber.None)
            {
                return(Program.CommonFunctions.DelApisResult(null !, rss));
            }

            var rt = StreamCasterApis.CreateStreamCaster(deviceId, streamcaster, out ResponseStruct rs);

            return(Program.CommonFunctions.DelApisResult(rt, rs));
        }
Example #2
0
        private static void write_StreamCaster(SrsStreamCasterConfClass o, out string output, int segmentLevel,
                                               List <Type> types = null !)
        {
            string output_sip = "";

            output = "";
            string segmentSpace_head = paddingSegment(segmentLevel).Key;
            string segmentSpace      = paddingSegment(segmentLevel).Value;

            output += segmentSpace_head + o.SectionsName?.ToLower().Trim() + " " + o.InstanceName + " { \r\n";
            foreach (PropertyInfo p in o.GetType().GetProperties())
            {
                object?obj = p.GetValue(o);
                if (obj == null)
                {
                    continue;
                }
                if (p.Name.ToLower().Trim() == "sectionsname" || p.Name.ToLower().Trim() == "instancename")
                {
                    continue;
                }

                if ((p.PropertyType == typeof(string) || p.PropertyType == typeof(int?) ||
                     p.PropertyType == typeof(ushort?) ||
                     p.PropertyType == typeof(byte?) ||
                     p.PropertyType == typeof(float?) || p.PropertyType == typeof(bool?)) ||
                    ((types != null) && types.Contains(p.PropertyType)))
                {
                    if (obj != null)
                    {
                        if (p.PropertyType == typeof(bool?))
                        {
                            string s = "";
                            s = Common.GetBoolStr(p, o);
                            string sTmp = segmentSpace + p.Name.Trim().ToLower() + "\t" + s + ";";
                            output += (sTmp + "\r\n");
                        }
                        else
                        {
                            string sTmp = segmentSpace + p.Name.Trim().ToLower() + "\t" + obj + ";";
                            output += (sTmp + "\r\n");
                        }
                    }
                }
            }

            foreach (PropertyInfo p in o.GetType().GetProperties()) //循环非基础类型数据,为了保证基础类型数据在顶上
            {
                object?obj = p.GetValue(o);
                if (obj == null)
                {
                    continue;
                }
                if (p.Name.ToLower().Trim() == "sectionsname" || p.Name.Trim() == "instancename")
                {
                    continue;
                }

                if (p.PropertyType == typeof(Sip))
                {
                    write_SubOnly(o.sip, out output_sip, 2);
                    output += output_sip;
                }
            }

            output += segmentSpace_head + "}\r\n";
        }
Example #3
0
        public static void Render_Sip(SectionBody scbin, SrsStreamCasterConfClass sccout, string instanceName = "")
        {
            if (sccout.sip == null)
            {
                sccout.sip = new Sip();
            }
            else
            {
                return; //只能有一个
            }

            sccout.sip.SectionsName = "sip";
            if (scbin.BodyList != null)
            {
                foreach (string s in scbin.BodyList)
                {
                    if (!s.Trim().EndsWith(";"))
                    {
                        continue;
                    }
                    KeyValuePair <string, string> tmpkv = Common.GetKV(s);
                    if (string.IsNullOrEmpty(tmpkv.Key))
                    {
                        continue;
                    }

                    string cmd = tmpkv.Key.Trim().ToLower();
                    switch (cmd)
                    {
                    case "enabled":
                        sccout.sip.Enabled = Common.str2bool(tmpkv.Value);
                        break;

                    case "listen":
                        sccout.sip.Listen = Common.str2ushort(tmpkv.Value);
                        break;

                    case "serial":
                        sccout.sip.Serial = tmpkv.Value;
                        break;

                    case "realm":
                        sccout.sip.Realm = tmpkv.Value;
                        break;

                    case "ack_timeout":
                        sccout.sip.Ack_timeout = Common.str2ushort(tmpkv.Value);
                        break;

                    case "keepalive_timeout":
                        sccout.sip.Keepalive_timeout = Common.str2ushort(tmpkv.Value);
                        break;

                    case "auto_play":
                        sccout.sip.Auto_play = Common.str2bool(tmpkv.Value);
                        break;

                    case "invite_port_fixed":
                        sccout.sip.Invite_port_fixed = Common.str2bool(tmpkv.Value);
                        break;

                    case "query_catalog_interval":
                        sccout.sip.Query_catalog_interval = Common.str2ushort(tmpkv.Value);
                        break;
                    }
                }
            }
        }
Example #4
0
        public static void Render(SectionBody scbin, SrsSystemConfClass sccout, string instanceName = "")
        {
            if (sccout.Stream_casters == null)
            {
                sccout.Stream_casters = new List <SrsStreamCasterConfClass>();
            }

            if (null != sccout.Stream_casters.Find(s => s.InstanceName == instanceName))
            {
                return; //filter the same streamcaster instance
            }
            SrsStreamCasterConfClass sccc = new SrsStreamCasterConfClass();

            if (scbin.BodyList != null)
            {
                foreach (string s in scbin.BodyList)
                {
                    if (!s.Trim().EndsWith(";"))
                    {
                        continue;
                    }
                    KeyValuePair <string, string> tmpkv = Common.GetKV(s);
                    if (string.IsNullOrEmpty(tmpkv.Key))
                    {
                        continue;
                    }
                    sccc.InstanceName = instanceName;
                    sccc.SectionsName = "stream_caster";
                    string cmd = tmpkv.Key.Trim().ToLower();
                    switch (cmd)
                    {
                    case "enabled":
                        sccc.Enabled = Common.str2bool(tmpkv.Value);
                        break;

                    case "caster":
                        sccc.Caster = (CasterEnum)Enum.Parse(typeof(CasterEnum), tmpkv.Value);
                        break;

                    case "output":
                        sccc.Output = tmpkv.Value;
                        break;

                    case "listen":
                        sccc.Listen = Common.str2ushort(tmpkv.Value);
                        break;

                    case "rtp_port_min":
                        sccc.Rtp_port_min = Common.str2ushort(tmpkv.Value);
                        break;

                    case "rtp_port_max":
                        sccc.Rtp_port_max = Common.str2ushort(tmpkv.Value);
                        break;

                    case "host":
                        sccc.Host = tmpkv.Value;
                        break;

                    case "audio_enable":
                        sccc.Audio_enable = Common.str2bool(tmpkv.Value);
                        break;

                    case "wait_keyframe":
                        sccc.Wait_keyframe = Common.str2bool(tmpkv.Value);
                        break;

                    case "rtp_idle_timeout":
                        sccc.Rtp_idle_timeout = Common.str2ushort(tmpkv.Value);
                        break;

                    case "auto_create_channel":
                        sccc.Auto_create_channel = Common.str2bool(tmpkv.Value);
                        break;

                    case "jitterbuffer_enable":
                        sccc.Jitterbuffer_Enable = Common.str2bool(tmpkv.Value);
                        break;
                    }
                }
            }

            if (scbin.SubSections != null)
            {
                foreach (SectionBody scb in scbin.SubSections)
                {
                    Render_Sip(scb, sccc);
                }
            }

            sccout.Stream_casters.Add(sccc);
        }