Пример #1
0
        //连接视频
        private void ConnectVideo(Int32 _iStream)
        {
            if (m_iLogonId < 0)
            {
                MessageBox.Show("Please logon device first!");
                return;
            }
            //断开已有连接
            DisConnectVideo();

            CLIENTINFO tInfo = new CLIENTINFO();

            tInfo.m_iServerID  = m_iLogonId;
            tInfo.m_iTimeout   = 20;
            tInfo.m_iNetMode   = 1; //默认TCP连接
            tInfo.m_iChannelNo = cboChanList.SelectedIndex;
            tInfo.m_iStreamNO  = _iStream;
            if (STREAM_3RD == _iStream)
            {
                tInfo.m_iStreamNO = STREAM_2ND;
                tInfo.m_iFlag     = FLAG_THREE_STREAM;
            }
            tInfo.m_cNetFile  = new char[255];
            tInfo.m_cRemoteIP = new char[16];
            Array.Copy(textIP.Text.ToCharArray(), tInfo.m_cRemoteIP, textIP.Text.Length);

            //开始接收一路视频数据,接收到数据后MainNotify有消息回调,然后才能播放视频
            UInt32 uiConID = 0;
            int    iRet    = NVSSDK.NetClient_StartRecv(ref uiConID, ref tInfo, null);

            if (iRet < 0)
            {
                MessageBox.Show("Connect video failed, ret:" + iRet);
                return;
            }
            m_iConnectId  = (Int32)uiConID;
            m_iConnChanNo = tInfo.m_iChannelNo;
            m_iConnStream = _iStream;

            //设置原始流回调
            //NVSSDK.NetClient_SetRawFrameCallBack(m_iConnectId, Notify_RawFrame, IntPtr.Zero);
        }
Пример #2
0
 public static extern Int32 NetClient_StartRecv(ref UInt32 _uiConID, ref CLIENTINFO _cltInfo, RECVDATA_NOTIFY _cbkDataArrive);
Пример #3
0
        private void VideoEnvironment_TDWY_MAIN_NOTIFYEvent(Int32 _ulLogonID, Int32 _iWparam, IntPtr _iLParam, IntPtr _iUser)
        {
            if (_ulLogonID == _iLogonID)
            {
                int iMsg = _iWparam & 0xffff;
                //表示属于当前信息登录信息
                switch (iMsg)
                {
                //登陆状态消息
                //param1 登陆IP
                //param2 登陆ID
                //param3 登陆状态
                case NetSDKMsg.WCM_LOGON_NOTIFY:
                    Int32 iStatus = _iLParam.ToInt32();
                    if (iStatus == NetSDKMsg.LOGON_SUCCESS)
                    {
                        VideoPlayCallback(new VideoPlayCallbackValue {
                            evType = Enum_VideoPlayEventType.LoginSuccess
                        });
                        //初始化通道列表
                        //Int32 iChanNum = 0;
                        //SDK_TDWY.NetClient_GetChannelNum(_iLogonID, ref iChanNum);
                        CLIENTINFO channel = new CLIENTINFO
                        {
                            m_iServerID  = _iLogonID,
                            m_iTimeout   = 20,
                            m_iNetMode   = 1,
                            m_iChannelNo = CurrentCameraInfo.Channel - 1,
                            m_iStreamNO  = (CurrentVideoPlaySet.PlayStream == Enum.Enum_VideoStream.SubStream) ? 1 : 0,
                            m_cNetFile   = new char[255],
                            m_cRemoteIP  = new char[16],
                        };
                        Array.Copy(CurrentVideoInfo.DVSAddress.ToArray(), channel.m_cRemoteIP, CurrentVideoInfo.DVSAddress.Length);
                        //开始接收一路视频数据
                        UInt32 uiConID = 0;
                        int    iRet    = SDK_TDWYSDK.NetClient_StartRecv(ref uiConID, ref channel, null);

                        VideoPlayCallback(new VideoPlayCallbackValue {
                            evType = Enum_VideoPlayEventType.RequestConn
                        });
                        if (iRet < 0)
                        {
                            //操作失败
                            VideoPlayCallback(new VideoPlayCallbackValue {
                                evType = Enum_VideoPlayEventType.RequestVideoTimeout
                            });
                        }
                        m_iConnectId = Convert.ToInt32(uiConID);
                    }
                    else
                    {
                        //触发相关时间进行提示
                        VideoPlayCallback(new VideoPlayCallbackValue {
                            evType = Enum_VideoPlayEventType.DevLoginException
                        });
                        Console.WriteLine("登录失败,Status:" + iStatus);
                    }
                    break;

                case NetSDKMsg.WCM_VIDEO_HEAD_EX:
                    RECT rect = new RECT();
                    SDK_TDWYSDK.NetClient_StartPlay(m_iConnectId, intptrPlayMain, rect, 0);
                    VideoPlayCallback(new VideoPlayCallbackValue {
                        evType = Enum_VideoPlayEventType.VideoPlay
                    });
                    break;

                case NetSDKMsg.WCM_ERR_DIGITCHANNEL_NOT_ENABLED:
                    VideoPlayCallback(new VideoPlayCallbackValue {
                        evType = Enum_VideoPlayEventType.RequestVideoTimeout
                    });
                    break;

                default:
                    Console.WriteLine("TDWY- MyMAIN_NOTIFY_V4: " + iMsg);
                    break;
                }
            }
        }
Пример #4
0
        /// <summary>
        /// 主回调
        /// </summary>
        /// <param name="_ulLogonID"></param>
        /// <param name="_iWparam"></param>
        /// <param name="_iLParam"></param>
        /// <param name="_iUser"></param>
        private void MyMAIN_NOTIFY_V4(Int32 _ulLogonID, Int32 _iWparam, IntPtr _iLParam, IntPtr _iUser)
        {
            int iMsg = _iWparam & 0xffff;

            //表示属于当前信息登录信息
            switch (iMsg)
            {
            //登陆状态消息
            //param1 登陆IP
            //param2 登陆ID
            //param3 登陆状态
            case NetSDKMsg.WCM_LOGON_NOTIFY:
                Int32 iStatus = _iLParam.ToInt32();
                if (iStatus == NetSDKMsg.LOGON_SUCCESS)
                {
                    Console.WriteLine("登录成功");
                    //VideoPlayCallback(new VideoPlayCallbackValue { evType = Enum_VideoPlayEventType.LoginSuccess });
                    //初始化通道列表
                    //Int32 iChanNum = 0;
                    //SDK_TDWY.NetClient_GetChannelNum(_iLogonID, ref iChanNum);

                    m_iLogonId = _ulLogonID;
                    CLIENTINFO channel = new CLIENTINFO
                    {
                        m_iServerID  = m_iLogonId,
                        m_iTimeout   = 20,
                        m_iNetMode   = 1,
                        m_iChannelNo = 0,
                        m_iStreamNO  = 1,
                        m_cNetFile   = new char[255],
                        m_cRemoteIP  = new char[16],
                    };
                    //Array.Copy(CurrentVideoInfo.DVSAddress.ToArray(), channel.m_cRemoteIP, CurrentVideoInfo.DVSAddress.Length);
                    //开始接收一路视频数据
                    UInt32 uiConID = 0;
                    int    iRet    = NetClient_StartRecv(ref uiConID, ref channel, null);

                    if (iRet < 0)
                    {
                        //操作失败
                    }
                    m_iConnectId = Convert.ToInt32(uiConID);
                }
                else
                {
                    //触发相关时间进行提示
                    //VideoPlayCallback(new VideoPlayCallbackValue { evType = Enum_VideoPlayEventType.DevLoginException });
                    Console.WriteLine("登录失败,Status:" + iStatus);
                }
                break;

            case NetSDKMsg.WCM_VIDEO_HEAD_EX:
                RECT rect = new RECT();
                this.BeginInvoke(new EventHandler(delegate
                {
                    NetClient_StartPlay(m_iConnectId, panelVideoShow.Handle, rect, 0);
                }));
                //VideoPlayCallback(new VideoPlayCallbackValue { evType = Enum_VideoPlayEventType.VideoPlay });
                break;

            //case NetSDKMsg.WCM_ERR_DIGITCHANNEL_NOT_ENABLED:
            //VideoPlayCallback(new VideoPlayCallbackValue { evType = Enum_VideoPlayEventType.RequestVideoTimeout });
            //break;
            default:
                Console.WriteLine("TDWY- MyMAIN_NOTIFY_V4: " + iMsg);
                break;
            }
        }
Пример #5
0
 public static extern Int32 NetClient_StartRecvEx(ref UInt32 _ulConID, ref CLIENTINFO _cltInfo, RECVDATA_NOTIFY_EX _cbkDataNotifyEx, IntPtr _lpUserData);