/// <summary> /// 处理Dvr信息 /// </summary> /// <param name="dvrVideo"></param> /// <param name="rs"></param> /// <returns></returns> public static bool OnDvr(DvrVideo dvrVideo) { try { dvrVideo.Deleted = false; dvrVideo.Undo = false; dvrVideo.UpdateTime = DateTime.Now; var onPublishList = FastUsefulApis.GetOnPublishMonitorListByDeviceId(dvrVideo.Device_Id !, out ResponseStruct rs); var ret = onPublishList.FindLast(x => x.Client_Id == dvrVideo.Client_Id); if (ret != null) { dvrVideo.ClientIp = ret.MonitorIp; dvrVideo.MonitorType = ret.MonitorType; dvrVideo.RecordDate = DateTime.Now.ToString("yyyy-MM-dd"); } SrsManager srs = SystemApis.GetSrsManagerInstanceByDeviceId(dvrVideo.Device_Id !); dvrVideo.Url = ":" + srs.Srs.Http_server !.Listen + dvrVideo.VideoPath !.Replace(srs.Srs.Http_server.Dir !, ""); lock (Common.LockDbObjForDvrVideo) { OrmService.Db.Insert(dvrVideo).ExecuteAffrows(); } } catch (Exception ex) { Console.WriteLine("存DVR错误:" + ex.Message); } return(true); }
/// <summary> /// 初始化SRS实例 /// </summary> public static void init_SrsServer() { LogWriter.WriteLog("初始化Srs服务器实例..."); DirectoryInfo dir = new DirectoryInfo(WorkPath); ResponseStruct rs; bool ret = false; foreach (FileInfo file in dir.GetFiles()) { if (file.Extension.Trim().ToLower().Equals(".conf")) //找到配置文件 { SrsManager sm = new SrsManager(); ret = sm.SRS_Init(file.FullName, out rs); string rsStr = JsonHelper.ToJson(rs); if (!ret) { LogWriter.WriteLog("初始化SRS配置失败...ConfigPath:" + file.FullName, rsStr, ConsoleColor.Yellow); } else { LogWriter.WriteLog("初始化SRS成功...ConfigPath:" + file.FullName, rsStr); SrsManagers.Add(sm); } } } if (SrsManagers.Count == 0) { LogWriter.WriteLog("没有的到Srs实例配置文件,系统将自动创建一个Srs实例配置文件"); SrsManager sm = new SrsManager(); ret = sm.CreateSrsManager(out rs); string rsStr = JsonHelper.ToJson(rs); if (!ret) { LogWriter.WriteLog("创建SRS实例失败...:", rsStr, ConsoleColor.Yellow); } else { LogWriter.WriteLog("初始化SRS成功...ConfigPath:" + sm.SrsConfigPath, rsStr); SrsManagers.Add(sm); } } }
/// <summary> /// 刷新并向磁盘写入SRS实例的配置文件 /// </summary> /// <param name="sm"></param> /// <param name="rs"></param> /// <returns></returns> public static bool RefreshSrsObject(SrsManager sm, out ResponseStruct rs) { SrsConfigBuild.Build(sm.Srs, sm.SrsConfigPath); LogWriter.WriteLog("重写Srs配置文件刷新Srs实例...", sm.Srs.ConfFilePath !); return(sm.Reload(out rs)); }
static void Main(string[] args) { string stream = "{\"code\":0,\"server\":87846,\"data\":{\"ok\":true,\"now_ms\":1591068638439,\"self\":{\"version\":\"4.0.23\",\"pid\":29282,\"ppid\":1,\"argv\":\"/root/StreamNode/srs -c /root/StreamNode/22364bc4-5134-494d-8249-51d06777fb7f.conf\",\"cwd\":\"/root/StreamNode\",\"mem_kbyte\":71448,\"mem_percent\":0.00,\"cpu_percent\":0.09,\"srs_uptime\":214},\"system\":{\"cpu_percent\":0.02,\"disk_read_KBps\":0,\"disk_write_KBps\":0,\"disk_busy_percent\":0.00,\"mem_ram_kbyte\":16266040,\"mem_ram_percent\":0.06,\"mem_swap_kbyte\":8257532,\"mem_swap_percent\":0.00,\"cpus\":8,\"cpus_online\":8,\"uptime\":162062.71,\"ilde_time\":1275660.46,\"load_1m\":0.12,\"load_5m\":0.22,\"load_15m\":0.19,\"net_sample_time\":1591068632439,\"net_recv_bytes\":0,\"net_send_bytes\":0,\"net_recvi_bytes\":458866896997,\"net_sendi_bytes\":218579639053,\"srs_sample_time\":1591068638439,\"srs_recv_bytes\":447805521,\"srs_send_bytes\":33944,\"conn_sys\":55,\"conn_sys_et\":29,\"conn_sys_tw\":10,\"conn_sys_udp\":4,\"conn_srs\":10}}}"; var a = JsonHelper.FromJson <SrsSystemInfo>(stream); Console.WriteLine(a.ToString()); Console.WriteLine("Hello World!"); Console.WriteLine(AppDomain.CurrentDomain.BaseDirectory); Console.WriteLine(JsonHelper.ToJson(SystemApis.GetSystemInfo())); Common.init_SrsServer(); Common.startServers(); List <string> srsdevidlist = SystemApis.GetAllSrsManagerDeviceId(); Console.WriteLine(JsonHelper.ToJson(srsdevidlist)); foreach (var s in srsdevidlist) { Console.WriteLine(JsonHelper.ToJson(SystemApis.GetSrsManagerInstanceByDeviceId(s))); } if (srsdevidlist.Count > 0) { SrsManager srsm = SystemApis.GetSrsManagerInstanceByDeviceId(srsdevidlist[0]); string d = "www.test1cn.tyz"; Console.WriteLine("pid:" + srsm.IsRunning); ResponseStruct rs; SrsvHostConfClass vhost = VhostApis.GetVhostTemplate(VhostIngestInputType.Stream, out rs); vhost.VhostDomain = d; VhostApis.SetVhost(srsm.SrsDeviceId, vhost, out rs); Rtc rtc = new Rtc(); rtc.Bframe = "known"; rtc.Enabled = true; VhostRtcApis.SetVhostRtc(srsm.SrsDeviceId, d, rtc, out rs); Dvr dvr = new Dvr(); dvr.Enabled = true; dvr.Dvr_path = "/dvr/path/"; VhostDvrApis.SetVhostDvr(srsm.SrsDeviceId, d, dvr, out rs); Hds hds = new Hds(); hds.Enabled = true; hds.Hds_window = 50; VhostHdsApis.SetVhostHds(srsm.SrsDeviceId, d, hds, out rs); SrtServerApis.DeleteSrtServer(srsm.SrsDeviceId, out rs); SrsSrtServerConfClass srt = new SrsSrtServerConfClass(); srt = SrtServerApis.GetSrtServerTemplate(out rs); srt.Enabled = true; SrtServerApis.SetSrtServer(srsm.SrsDeviceId, srt, out rs); VhostApis.DeleteVhostByDomain(srsm.SrsDeviceId, "__defaultvhost__", out rs); VhostRtcApis.DeleteVhostRtc(srsm.SrsDeviceId, d, out rs); VhostHdsApis.DeleteVhostHds(srsm.SrsDeviceId, d, out rs); SrsConfigBuild.Build(srsm.Srs, srsm.SrsConfigPath); if (srsm.IsRunning) { bool ret = srsm.Reload(out rs); } } }