/// <summary> /// 监控平台加载器,轮询加载,直到成功 /// </summary> /// <param name="loginInfo"></param> private void LoginThread(Object loginInfoObj) { NLogEx.LoggerEx logEx = new NLogEx.LoggerEx(log); logEx.Trace("Enter: eLTEVideoMonitor.LoginThread()."); try { eLTELoginInfo loginInfo = loginInfoObj as eLTELoginInfo; if (loginInfo == null) { logEx.Error("loginInfoObj is Null."); return; } if (loginInfo.NotFirstLogin == true) { //登陆失败,等待一分后再次尝试登陆 Thread.Sleep(5000); } //本机IP //string localIP = GetLocalIP(ip, iPort, ilocalPort); if (string.IsNullOrEmpty(localIP)) { localIP = GetLocalIP(ip, iPort, ilocalPort); } logEx.Trace("Call eLTEVideoMonitor.Login({0},{1},{2},{3}).", loginInfo.Ip, loginInfo.Port, loginInfo.User, localIP); //设置登录服务器IP、本地IP、用户名、密码、sip端口等信息 ELTE_RESULT result = (ELTE_RESULT)lteSdkClient.Set_Login_Info(loginInfo.Ip, localIP, loginInfo.User, loginInfo.Pwd, loginInfo.Port.ToString(), Convert.ToInt32(loginInfo.User)); if (result != ELTE_RESULT.RET_SUCCESS) { logEx.Error("Set_Login_Info failed.Monitor id:{0}.ip:{1}, port:{2}, user:{3}", this.monitorId, loginInfo.Ip, loginInfo.Port, loginInfo.User); } //发起视频回传成功后,在状态变化事件中处理视频接收 if (callP2pvideo == null) { callP2pvideo = P2pStatusDelegateFun; eLTEInterface.SetP2pVideoCallStaCallBack(callP2pvideo); callResStatus = CallbackResStatusDelegateFun; eLTEInterface.SetResStaCallBack(callResStatus); callUserStatus = CallUserStatusDelegateFun; eLTEInterface.SetUserStaCallBack(callUserStatus); callProvisionAllResync = CallProvisionAllDelegateFun; eLTEInterface.SetProvisionAllResyncCallBack(callProvisionAllResync); callModuleStatus = CallModuleStatusDelegateFun; eLTEInterface.SetModStaCallBack(callModuleStatus); //设置rtp转码回调函数 frameDataCallBack = FrameDataCallBackFun; //初始化rtp转码模块 rtpAdapter.ESDK_RTP_Init(); //设置NETSOURCE日志目录 IVS_NETSOURCE_RESULT iNet = NetSourcedInterface.IVS_NETSOURCE_Init(AppDomain.CurrentDomain.BaseDirectory + "\\logs"); if (iNet != IVS_NETSOURCE_RESULT.SUCCESS) { logEx.Error("SipStackAdapter.IVS_NETSOURCE_Init Failed."); } } //初始化上下文,启动SDK result = (ELTE_RESULT)lteSdkClient.SDK_START(); if (result != ELTE_RESULT.RET_SUCCESS) { logEx.Fatal("eLTEVideoMonitor.SDK_START failed.Monitor id:{0}.ip:{1}, port:{2}, user:{3},ErrorNo:{4}", this.monitorId, loginInfo.Ip, loginInfo.Port, loginInfo.User,(int)result); //服务器端返回错误, 操作被调度机拒绝 if ((int)(result) == -40097) { logEx.Fatal("Login to eLTEVideoMonitor failed,elte remote failed,elte refuse to connect."); } } else { isLoginSuccess = true; logEx.Info("eLTEVideoMonitor.SDK_START success.Monitor id:{0}.ip:{1}, port:{2}, user:{3}.", this.monitorId, loginInfo.Ip, loginInfo.Port, loginInfo.User); } } catch (System.Exception ex) { logEx.Error("Load eLTEVideoMonitor failed. Exception message:{0}.", ex.Message); } }
/// <summary> /// 打开rtp通道 /// </summary> /// <param name="frameDataCallBack">回调函数,返回解析完成后的码流数据</param> /// <param name="uiChannel"></param> public void ESDK_RTP_OpenChannel(FrameDataCallBack frameDataCallBack, uint uiChannel) { NLogEx.LoggerEx logEx = new NLogEx.LoggerEx(log); logEx.Trace("Enter: RtpAdapter.ESDK_RTP_OpenChannel()."); try { int iRet = SdkRtpInterface.ESDK_RTP_OpenChannel(frameDataCallBack, uiChannel); if (iRet != 0) { logEx.Error("RtpAdapter.ESDK_RTP_OpenChannel ,error:{0}", iRet); } } catch (System.Exception ex) { logEx.Error("RtpAdapter.ESDK_RTP_OpenChannel ,Exception:{0}", ex.ToString()); } }
public static extern int ESDK_RTP_OpenESChannel(FrameDataCallBack frameDataCallBack, uint uiChannel);
/// <summary> /// 解析rtp包 /// </summary> /// <param name="pBuf"></param> /// <param name="uiBufSize"></param> /// <param name="uiChannel"></param> public void ESDK_RTP_OpenESChannel(FrameDataCallBack frameDataCallBack, uint uiChannel) { NLogEx.LoggerEx logEx = new NLogEx.LoggerEx(log); try { int iRet = SdkRtpInterface.ESDK_RTP_OpenESChannel(frameDataCallBack, uiChannel); if (iRet != 0) { logEx.Error("RtpAdapter.ESDK_RTP_OpenESChannel failed.uiChannel ={0} ", uiChannel); } } catch (System.Exception ex) { logEx.Error("RtpAdapter.ESDK_RTP_OpenESChannel ,Exception:{0},uiChannel ={1} ", ex.ToString(), uiChannel); } }
/// <summary> /// 开始连接、注册Sip服务器 /// </summary> private void StartConnectRegisterSip(string domain, int sipPort, int localPort, string username, string password) { NLogEx.LoggerEx logEx = new NLogEx.LoggerEx(log); logEx.Trace("Enter: T28181VideoMonitor.StartConnectRegisterSip()."); try { //初始化SIP sipStack.SIP_SDK_Init(username, password, localPort, domain, sipPort, OnReceivedAllDevice); //注册Sip服务器 sipStack.SIP_SDK_REGISTER(); //开始保活 sipStack.StartKeepalive(username); //设置实况rtp数据包回调 sipStack.SetNetDataCallBack(realPlayCallback, netExceptionCallBack); //初始化rtp转码模块 rtpAdapter.ESDK_RTP_Init(); //设置rtp转码回调函数 frameDataCallBack = FrameDataCallBackFun; } catch (System.Exception ex) { logEx.Error("T28181 StartConnectRegisterSip failed.Execption message:{0}.", ex.Message); } }