示例#1
0
 private void frmVideo_Load(object sender, EventArgs e)
 {
     this.Text         = this.MainDevice.Name;
     this.FormClosing += new FormClosingEventHandler(this.frmVideo_FormClosing);
     this.MainThread   = new Thread(new ThreadStart(this.WorkerThread))
     {
         IsBackground = true
     };
     this.MainThread.Start();
     if (this.MainDevice.Type == "File")
     {
         this.groupControl1.Visible    = true;
         this.trackBarControl1.Visible = true;
         BcVideoServer vs = BcVideoServer.LoadById(this.MainDevice.Vsid);
         WcfExtensions.Using <VideoServerClient>(new VideoServerClient(), (Action <VideoServerClient>)(service =>
         {
             service.Endpoint.Address = new EndpointAddress("net.tcp://" + (object)vs.Ip + ":" + (string)(object)vs.Port + "/VideoStreamServer/VideoServer");
             service.Open();
             Thread.Sleep(1000);
             try
             {
                 this.trackBarControl1.Properties.Maximum = (int)service.GetDuration(this.MainDevice.Id);
             }
             catch (Exception ex)
             {
             }
         }));
     }
     else
     {
         this.pictureEdit1.Size = new Size(this.pictureEdit1.Width, this.pictureEdit1.Height + this.groupControl1.Height);
     }
 }
示例#2
0
 private void btPause_Click(object sender, EventArgs e)
 {
     if (this.btPause.Text == Messages.Pause)
     {
         try
         {
             BcVideoServer     bcVideoServer     = BcVideoServer.LoadById(this.MainDevice.Vsid);
             VideoServerClient videoServerClient = new VideoServerClient();
             videoServerClient.Endpoint.Address = new EndpointAddress("net.tcp://" + (object)bcVideoServer.Ip + ":" + (string)(object)bcVideoServer.Port + "/VideoStreamServer/VideoServer");
             videoServerClient.Open();
             videoServerClient.Pause(this.MainDevice.Id);
             this.btPause.Text = Messages.Continue;
             videoServerClient.Abort();
         }
         catch (Exception ex)
         {
         }
     }
     else
     {
         try
         {
             BcVideoServer     bcVideoServer     = BcVideoServer.LoadById(this.MainDevice.Vsid);
             VideoServerClient videoServerClient = new VideoServerClient();
             videoServerClient.Endpoint.Address = new EndpointAddress("net.tcp://" + (object)bcVideoServer.Ip + ":" + (string)(object)bcVideoServer.Port + "/VideoStreamServer/VideoServer");
             videoServerClient.Open();
             this.btPause.Text = Messages.Pause;
             videoServerClient.Run(this.MainDevice.Id);
             videoServerClient.Abort();
         }
         catch (Exception ex)
         {
         }
     }
 }
示例#3
0
 private void btPlay_Click(object sender, EventArgs e)
 {
     try
     {
         BcVideoServer     bcVideoServer     = BcVideoServer.LoadById(this.MainDevice.Vsid);
         VideoServerClient videoServerClient = new VideoServerClient();
         videoServerClient.Endpoint.Address = new EndpointAddress("net.tcp://" + (object)bcVideoServer.Ip + ":" + (string)(object)bcVideoServer.Port + "/VideoStreamServer/VideoServer");
         videoServerClient.Open();
         this.trackBarControl1.Visible = true;
         this.trackBarControl1.Value   = 0;
         this.btPause.Visible          = true;
         this.btPlay.Visible           = true;
         this.btStop.Visible           = true;
         videoServerClient.PlayStart(this.MainDevice.Id);
         try
         {
             Thread.Sleep(2000);
             this.trackBarControl1.Properties.Maximum = (int)videoServerClient.GetDuration(this.MainDevice.Id);
         }
         catch (Exception ex)
         {
         }
         this.btPause.Text = "Пауза";
         videoServerClient.Abort();
     }
     catch (Exception ex)
     {
     }
 }
示例#4
0
 public void WorkerThread()
 {
     while (!FrmDevices.ClosFlag)
     {
         if (this.CloseForm)
         {
             break;
         }
         try
         {
             BcVideoServer bcVideoServer = BcVideoServer.LoadById(this.MainDevice.Vsid);
             if (bcVideoServer.Id != Guid.Empty)
             {
                 int num = 0;
                 VideoServerClient videoServerClient = new VideoServerClient();
                 videoServerClient.Endpoint.Address = new EndpointAddress("net.tcp://" + (object)bcVideoServer.Ip + ":" + (string)(object)bcVideoServer.Port + "/VideoStreamServer/VideoServer");
                 videoServerClient.Open();
                 while (!FrmDevices.ClosFlag)
                 {
                     ++num;
                     if (!this.CloseForm)
                     {
                         byte[] imageFromDevice = videoServerClient.GetImageFromDevice(this.MainDevice.Id);
                         if (imageFromDevice != null && imageFromDevice.Length > 0)
                         {
                             using (MemoryStream memoryStream = new MemoryStream(imageFromDevice))
                                 this.Invoke((Delegate) new FrmVideo.NewImageFunc(this.NewImage), (object)new Bitmap((Stream)memoryStream));
                         }
                         Thread.Sleep(20);
                         if (num >= 20 && this.MainDevice.Type == "File")
                         {
                             try
                             {
                                 this._nextPos = true;
                                 this.Invoke((Delegate) new FrmVideo.SetNewPosFunc(this.SetNewPos), (object)(int)videoServerClient.GetCurrentPos(this.MainDevice.Id));
                                 this._nextPos = false;
                                 num           = 0;
                             }
                             catch (Exception ex)
                             {
                             }
                         }
                     }
                     else
                     {
                         break;
                     }
                 }
             }
         }
         catch (Exception ex)
         {
         }
         Thread.Sleep(1000);
     }
 }
示例#5
0
 private void btStop_Click(object sender, EventArgs e)
 {
     try
     {
         BcVideoServer     bcVideoServer     = BcVideoServer.LoadById(this.MainDevice.Vsid);
         VideoServerClient videoServerClient = new VideoServerClient();
         videoServerClient.Endpoint.Address = new EndpointAddress("net.tcp://" + (object)bcVideoServer.Ip + ":" + (string)(object)bcVideoServer.Port + "/VideoStreamServer/VideoServer");
         videoServerClient.Open();
         this.trackBarControl1.Value = 0;
         videoServerClient.Stop(this.MainDevice.Id);
         videoServerClient.Abort();
     }
     catch (Exception ex)
     {
     }
 }
 private BcVideoServer TryLoadVideServer(Guid vsid)
 {
     try
     {
         BcVideoServer bcVideoServer = BcVideoServer.LoadById(vsid);
         if (!(bcVideoServer.Id == Guid.Empty))
         {
             return(bcVideoServer);
         }
         this._log.WarnFormat("Information about the object id={0} not found in DB", (object)vsid);
         return((BcVideoServer)null);
     }
     catch (Exception ex)
     {
         this._log.Error((object)ex);
         return((BcVideoServer)null);
     }
 }
示例#7
0
 private void trackBarControl1_EditValueChanged(object sender, EventArgs e)
 {
     if (!this._nextPos)
     {
         try
         {
             BcVideoServer     bcVideoServer     = BcVideoServer.LoadById(this.MainDevice.Vsid);
             VideoServerClient videoServerClient = new VideoServerClient();
             videoServerClient.Endpoint.Address = new EndpointAddress("net.tcp://" + (object)bcVideoServer.Ip + ":" + (string)(object)bcVideoServer.Port + "/VideoStreamServer/VideoServer");
             videoServerClient.Open();
             videoServerClient.SetPos(this.MainDevice.Id, (double)this.trackBarControl1.Value);
             videoServerClient.Abort();
         }
         catch (Exception ex)
         {
         }
     }
     this.lbPeriod.Text = this.GetTime((double)this.trackBarControl1.Value) + "//" + this.GetTime((double)this.trackBarControl1.Properties.Maximum);
 }
        public ServerConnectionParameters GetVideoServerConnectionParameters(Guid vsid)
        {
            string key = vsid.ToString();
            ServerConnectionParameters connectionParameters1 = this._videoServersCache.Get(key, (string)null) as ServerConnectionParameters;

            if (connectionParameters1 != null)
            {
                return(connectionParameters1);
            }
            BcVideoServer bcVideoServer = this.TryLoadVideServer(vsid);

            if (bcVideoServer == null)
            {
                return((ServerConnectionParameters)null);
            }
            ServerConnectionParameters connectionParameters2 = new ServerConnectionParameters(bcVideoServer.Ip, bcVideoServer.Port);

            this._videoServersCache.Set(key, (object)connectionParameters2, (DateTimeOffset)DateTime.Now.AddSeconds(10.0), (string)null);
            return(connectionParameters2);
        }
示例#9
0
 public void Load(Guid serverId)
 {
     this._logger.Info((object)"Starting VideoServer");
     if (BcVideoServer.LoadById(serverId) == null)
     {
         this._logger.ErrorFormat("Server with id {0} not found. Service will be stopped", (object)serverId);
         throw new ArgumentException();
     }
     this.Id = serverId;
     Process.GetCurrentProcess().PriorityClass = ProcessPriorityClass.AboveNormal;
     try
     {
         this._logger.Info((object)"Loading devices from database");
         this.LoadDevices();
         this.StartProcessing();
     }
     catch (Exception ex)
     {
         this._logger.Error((object)"Error loading server", ex);
     }
 }