public void Run(BaseWorker worker) { WebMethod.Device device = null; while (!worker.IsTerminated()) { var info = WebMethod.GetDevice(configuration.information.clientId); if (info == null) { Tracker.LogE("WebMethod: GetDevice fail"); Thread.Sleep(3000); continue; } // 获取并检查设备信息 if (!info.Equals(device)) { device = info; EventEmitter.Instance.Publish(Constants.EVENT_SERVICE_START_STREAMING, new Dictionary <int, string>() { { 1, device.pushUrl }, { 2, device.irPushUrl } }); } // 更新设备状态 WebMethod.UpdateDeviceStatus(new WebMethod.DeviceParameter() { serialNumber = configuration.information.clientId, status = "1" }); Thread.Sleep(1000 * 60); } }
public void Run(BaseWorker worker) { bool isOpen = false; while (!worker.IsTerminated()) { if (!isOpen) { try { // 创建目录 var now = DateTime.Now; var folder = $"{Global.gRecordingsFolder}/{now.Year}-{now.Month}-{now.Day}"; if (!Directory.Exists(folder)) { Directory.CreateDirectory(folder); } encoder.Stop(); encoder.Start($"{folder}/{now.ToString("yyyyMMddHHmmss")}.h264"); isOpen = true; } catch (Exception e) { Tracker.LogE(e); Thread.Sleep(3000); continue; } } try { IntPtr addr = imageGCHandle.AddrOfPinnedObject(); encoder.Encode(addr, addr + imageSize, addr + imageSize + imageSize / 4); } catch (Exception e) { Tracker.LogE(e); encoder.Stop(); isOpen = false; Thread.Sleep(3000); continue; } Thread.Sleep(1000 / cell.mCell.mIRCameraVideoFrameRate); } try { encoder.Encode(IntPtr.Zero, IntPtr.Zero, IntPtr.Zero); encoder.Stop(); } catch (Exception e) { Tracker.LogE(e); } }
public void Run(BaseWorker worker) { try { encoder.Stop(); encoder.Start($"rtmp://{Global.gCloudRtmpIP}:{Global.gCloudRtmpPort}/live/{streamId}"); } catch (Exception e) { Tracker.LogE(e); OnFault(); return; } while (!worker.IsTerminated()) { try { IntPtr addr = imageGCHandle.AddrOfPinnedObject(); encoder.Encode(addr, addr + imageSize, addr + imageSize + imageSize / 4); } catch (Exception e) { Tracker.LogE(e); encoder.Stop(); OnFault(); return; } Thread.Sleep(1000 / cell.mCell.mIRCameraVideoFrameRate); } try { encoder.Encode(IntPtr.Zero, IntPtr.Zero, IntPtr.Zero); encoder.Stop(); Stop(); } catch (Exception e) { Tracker.LogE(e); } }