/// <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); }
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); }