Пример #1
0
        /// <summary>
        /// 打开音频通道
        /// </summary>
        /// <returns></returns>
        public bool OpenSound()
        {
            TLPlay_PlaySound(m_hPlayPort);
            Byte chn = (byte)(CurrentCameraInfo.Channel - 1);
            int  ret = NETDVR_mutePreViewAudio(d.nHandle, chn, true);

            aduiocallback = new pFrameCallBack(aduiocallback1);
            ret           = NETDVR_openAudioReciever(d.nHandle, chn, aduiocallback, 1);
            if ((int)NETDVR_RETURN_CODE.NETDVR_SUCCESS != ret)
            {
                return(false);
            }
            ret = NETDVR_startAudioSend(d.nHandle, chn);
            if ((int)NETDVR_RETURN_CODE.NETDVR_SUCCESS != ret)
            {
                return(false);
            }
            SoundState = Enum_VideoPlaySoundState.SoundOpen;
            return(true);
        }
Пример #2
0
        public bool VideoPlay()
        {
            bool bolResult = false;

            SDKInterface.SDK_TLi.NETDVR_devicenode_t deviceInfo = new SDKInterface.SDK_TLi.NETDVR_devicenode_t();
            int Temp_intIndex = SDK_TLi.GetNodeIndexByDeviceID(CurrentVideoInfo.DVSUniqueCode);

            if (Temp_intIndex == -1)
            {
                //刷新设备列表
                VideoEnvironment.VideoEnvironment_TL.RefreshDeviceList();
            }
            Temp_intIndex = SDK_TLi.GetNodeIndexByDeviceID(CurrentVideoInfo.DVSUniqueCode);
            if (Temp_intIndex == -1)
            {
                VideoPlayCallback(new VideoPlayCallbackValue {
                    evType = Enum_VideoPlayEventType.DeviceNotExist, EventContent = "设备不存在"
                });
                return(false);
            }
            d = VideoEnvironment.VideoEnvironment_TL.devices[Temp_intIndex];
            deviceInfo.device_ID       = d.devicenode.device_ID;
            deviceInfo.maxSubstreamNum = d.devicenode.maxSubstreamNum;
            deviceInfo.maxChnNum       = d.devicenode.maxChnNum;
            deviceInfo.maxAduioNum     = d.devicenode.maxAduioNum;
            SDKInterface.SDK_TLi.NETDVR_createDVR_3g(ref d.nHandle, deviceInfo.device_ID, ref deviceInfo);
            m_hPlayPort = 0;
            SDKInterface.SDK_TLi.TLPlay_GetPort(ref m_hPlayPort);
            SDKInterface.SDK_TLi.TLPlay_SetPlayMode(m_hPlayPort, SDKInterface.SDK_TLi.TLPLAYMODE.TL_PLAY_POOL_STREAM);
            SDKInterface.SDK_TLi.TLPlay_OpenStream(m_hPlayPort, 2 << 20);
            SDKInterface.SDK_TLi.TLPlay_Play(m_hPlayPort, PicPlayMain.Handle);
            VideoPlayState = Enum_VideoPlayState.Connecting;
            frameCallBack  = get_encframe;
            byte btyChannel = (byte)(CurrentCameraInfo.Channel - 1);
            int  ret        = NETDVR_openSubVideoReciever(d.nHandle, btyChannel, frameCallBack, 0);

            if ((int)NETDVR_RETURN_CODE.NETDVR_SUCCESS != ret)
            {
                VideoPlayCallback(new VideoPlayCallbackValue {
                    evType = Enum_VideoPlayEventType.VideoPlayException, EventContent = "打开子码流接收异常"
                });
                NETDVR_closeSubVideoReciever(d.nHandle, btyChannel);
                return(false);
            }

            //decFrameCallBack = DealDecVideoFrame;
            //ret = NETDVR_createSubVideoDecoder(d.nHandle, btyChannel, decFrameCallBack, 0);
            ret = NETDVR_setSubDecoderFMT(d.nHandle, btyChannel, NETDVR_FMT_TYPE.NETDVR_FMT_YV12);
            if ((int)NETDVR_RETURN_CODE.NETDVR_SUCCESS != ret)
            {
                VideoPlayCallback(new VideoPlayCallbackValue {
                    evType = Enum_VideoPlayEventType.VideoPlayException, EventContent = "设置解码格式异常"
                });
                NETDVR_destroySubVideoDecoder(d.nHandle, btyChannel);
                NETDVR_closeSubVideoReciever(d.nHandle, btyChannel);
                return(false);
            }
            ret = NETDVR_startSubVideoSend(d.nHandle, btyChannel);
            if ((int)NETDVR_RETURN_CODE.NETDVR_SUCCESS != ret)
            {
                VideoPlayCallback(new VideoPlayCallbackValue {
                    evType = Enum_VideoPlayEventType.VideoPlayException, EventContent = "设置解码格式异常"
                });
                NETDVR_destroySubVideoDecoder(d.nHandle, btyChannel);
                NETDVR_closeSubVideoReciever(d.nHandle, btyChannel);
                return(false);
            }
            VideoPlayCallback(new VideoPlayCallbackValue {
                evType = Enum_VideoPlayEventType.VideoPlay
            });
            if (CurrentVideoPlaySet.VideoRecordEnable)
            {
                recFileNameCallBack = new pRecFilenameCallBack(FilenameCallBack);
                VideoPlayCallback(new VideoPlayCallbackValue {
                    evType = Enum_VideoPlayEventType.StartVideoRecord
                });
                NETDVR_setSubRecordFileNameCB(d.nHandle, btyChannel, recFileNameCallBack, 0);
                NETDVR_startSubRecord(d.nHandle, btyChannel, CurrentVideoPlaySet.VideoRecordFilePath, 0);
            }
            return(bolResult);
        }