public void AddSession(MediaStreamSession MediaStreamSession) { MTSession_lock.EnterWriteLock(); try { MediaStreamSessions.Add(MediaStreamSession); } finally { MTSession_lock.ExitWriteLock(); } }
public void RemoveSession(MediaStreamSession MediaStreamSession) { MTSession_lock.EnterWriteLock(); try { if (MediaStreamSessions.Contains(MediaStreamSession)) { MediaStreamSessions.Remove(MediaStreamSession); } } finally { MTSession_lock.ExitWriteLock(); } }
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); } } }
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); } } }