Пример #1
0
 /// <summary>
 /// 生成对应的视频播放地址
 /// </summary>
 /// <param name="aTerminalId">终端编号</param>
 /// <param name="aChn">通道号</param>
 /// <returns></returns>
 public static string GenRTSPUrl(string aTerminalId, AVChannel aChn)
 {
     return(string.Format("rtsp://{0}:{1}/{2}?channel={3}.sdp",
                          Settings.Default.DVRSvrIp,
                          Settings.Default.DVRSvrPort,
                          aTerminalId, (byte)aChn));
 }
Пример #2
0
        /// <summary>
        /// 开启视频预览
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnOk_Click(object sender, EventArgs e)
        {
            string terminalId = this.txtTerminalId.Text.Trim();

            if (string.IsNullOrEmpty(terminalId))
            {
                errPrv.SetError(this.txtTerminalId, "终端编号不能为空...");
                this.txtTerminalId.Focus();
                return;
            }

            ValueString <AVChannel> selChn = this.cboChn.SelectedItem as ValueString <AVChannel>;

            if (selChn == null)
            {
                errPrv.SetError(this.cboChn, "请选择有效的预览通道...");
                this.cboChn.Focus();
                return;
            }

            string svrIp = this.txtSvrIp.Text.Trim();

            if (string.IsNullOrEmpty(svrIp))
            {
                errPrv.SetError(this.txtSvrIp, "视频服务器IP地址不能为空...");
                this.txtSvrIp.Focus();
                return;
            }
            ushort svrPort = (ushort)this.nudPort.Value;

            this.btnOk.Enabled = false;
            this.TerminalId    = null;
            var task = Task.Factory.StartNew(() =>
            {
                var result = UrlApiHelper.ControlVideo(terminalId, selChn.Value, VedioControlType.RealTime);
                if (result == null)
                {
                    GuiHelper.MsgBox("服务器连接异常...");
                }
                else if (result.Status != 0)
                {
                    GuiHelper.MsgBox("实时预览开启失败: " + result.Message);
                }
                else
                {
                    this.TerminalId             = terminalId;
                    this.Channel                = selChn.Value;
                    Settings.Default.DVRSvrIp   = svrIp;
                    Settings.Default.DVRSvrPort = svrPort;
                }
            });

            task.Wait();
            this.btnOk.Enabled = true;
            if (!string.IsNullOrEmpty(this.TerminalId))
            {
                this.DialogResult = DialogResult.OK;
                this.Close();
            }
        }
Пример #3
0
 /// <summary>
 /// 使能对应终端通道的视频预览窗口
 /// </summary>
 /// <param name="aTerminalId"></param>
 /// <param name="aChn"></param>
 public void EnableDVR(string aTerminalId, AVChannel aChn)
 {
     mFrmDVR?.InvokeIfRequired((frm) => frm.AddVideoToken(new DVR.DVRToken()
     {
         TerminalId = aTerminalId,
         LogicChn   = aChn,
     }));
 }
Пример #4
0
        /// <summary>
        /// 对指定终端进行视频控制 开启实时预览或者停止预览
        /// </summary>
        /// <param name="aTerminalId">终端编号</param>
        /// <param name="aChn">通道号</param>
        /// <param name="aType">控制方式</param>
        /// <returns>服务器返回的响应数据</returns>
        public static JsonBase ControlVideo(string aTerminalId, AVChannel aChn, VedioControlType aType)
        {
            string jsonStr = GetApiReply(VideoControl(aTerminalId, aChn, aType));

            if (string.IsNullOrEmpty(jsonStr))
            {
                return(null);
            }

            return(ModelUtils.GetJsonObject <JsonBase>(jsonStr));
        }
Пример #5
0
 /// <summary>
 /// 对指定终端进行视频控制 开启实时预览或者停止预览的URL
 /// </summary>
 /// <param name="aTerminalId">终端编号</param>
 /// <param name="aChn">通道号</param>
 /// <param name="aType">控制方式</param>
 /// <returns></returns>
 private static string VideoControl(string aTerminalId, AVChannel aChn, VedioControlType aType)
 {
     return($"{SvrUrl}{LowerFirstChar(MethodBase.GetCurrentMethod().Name)}.action?" +
            $"{GetTermianlAkUrl(aTerminalId)}" +
            $"&type={(int)aType}&id={(byte)aChn}");
 }