Ejemplo n.º 1
0
 public void AddSession(MediaStreamSession MediaStreamSession)
 {
     MTSession_lock.EnterWriteLock();
     try
     {
         MediaStreamSessions.Add(MediaStreamSession);
     }
     finally
     {
         MTSession_lock.ExitWriteLock();
     }
 }
Ejemplo n.º 2
0
 public void RemoveSession(MediaStreamSession MediaStreamSession)
 {
     MTSession_lock.EnterWriteLock();
     try
     {
         if (MediaStreamSessions.Contains(MediaStreamSession))
         {
             MediaStreamSessions.Remove(MediaStreamSession);
         }
     }
     finally
     {
         MTSession_lock.ExitWriteLock();
     }
 }
Ejemplo n.º 3
0
 public void Connect(MediaStreamSession session)
 {
     lock (VideoClient_lock)
     {
         if (VideoClient != null)
         {
             if (VideoClient.IsConnected)
             {
                 return;
             }
             else
             {
                 VideoClient.Dispose();
                 VideoClient = null;
             }
         }
         try
         {
             VideoInputChannel pseudodev = Howell5198ServerAppInstance.CreatNewDataManagementClient().GetVideoInputChannelByPseudoCode(Convert.ToString(session.Context.StreamIdentifier.ChannelNo + 1));
             VideoClient            = new MTClient(new System.Net.IPEndPoint(System.Net.IPAddress.Parse(ServiceConfiguration.Instance.MTServerIP), ServiceConfiguration.Instance.MTServerPort));
             VideoClient.Credential = new MTClientCredential()
             {
                 UserName = ServiceConfiguration.Instance.UserName, Password = ServiceConfiguration.Instance.Password, MobileTerminalId = session.Context.SessionID
             };
             VideoClient.Timeout = timeout;
             VideoClient.Connect();
             Identity Channelid = Identity.Parse(pseudodev.Id);
             DeviceID  = Channelid.GetDeviceIdentity().ToString();
             ChannelNo = Channelid.ModuleNumber - 1;
         }
         catch (Exception ex)
         {
             if (VideoClient != null)
             {
                 VideoClient.Dispose();
                 VideoClient = null;
             }
             Console.WriteLine("MTSession.Connect时." + ex.Message);
             ServiceEnvironment.Instance.Logger.Warn("MTSession.Connect时.", ex);
         }
     }
 }
Ejemplo n.º 4
0
        public void Subscribe(MediaStreamSession Session)
        {
            var solt = Session.Context.StreamIdentifier;

            lock (VideoClient_lock)
            {
                try
                {
                    if (VideoClient == null)
                    {
                        return;
                    }
                    if (VideoClient.IsConnected == false)
                    {
                        return;
                    }
                    if (VideoClient.IsSubscribed)
                    {
                        AddSession(Session);
                    }
                    else
                    {
                        VideoClient.MediaDataReceived += new MTClientMediaDataReceivedHandler(MediaDataReceived);
                        uint dialogid = (uint)((solt.StreamNo == 0) ? solt.ChannelNo : (solt.ChannelNo + 10000));
                        VideoClient.Subscribe(dialogid, DeviceID, ChannelNo, solt.StreamNo);
                        AddSession(Session);
                        Console.WriteLine(String.Format("通道{0}的类型{1}预览流已建立", solt.ChannelNo, solt.StreamNo));
                        ServiceEnvironment.Instance.Logger.Info(String.Format("通道{0}的类型{1}预览流已建立", solt.ChannelNo, solt.StreamNo));
                    }
                }
                catch (Exception ex)
                {
                    Console.WriteLine(String.Format("VideoClient Subscribe Error.ChannelNo:{0}", solt.ChannelNo) + ex.Message);
                    ServiceEnvironment.Instance.Logger.Error(String.Format("VideoClient Subscribe Error.ChannelNO:{0}", solt.ChannelNo), ex);
                }
            }
        }