目前在做Onvif协议的相关项目,做的是服务器端,与odt可以连接的一个中间插件。
现在基本框架已经实现,可以接收到odt发送的数据,目前的问题是:
我需要对这些数据进行处理,然后通过tcp通讯发送给伺服板,但是其中要区分出可见光与红外的token,已知是在MediaServiceExt中的GetProfile函数中获取token,但是现在我这个获取到的token值无法发送给其他源文件,因此无法解析,抱拳各位大lao相jiu
int MediaServiceExt::GetProfile(_mediaws__GetProfile *mediaws__GetProfile, _mediaws__GetProfileResponse &mediaws__GetProfileResponse) {
{
qDebug() << "Media Service GetProfile in NVT\n";
if(mediaws__GetProfile->ProfileToken.compare("profile1") == 0){
tt__Profile * ttProfile = new tt__Profile();
ttProfile->fixed = 0;
ttProfile->token = "vis";
ttProfile->Name = "Profile1";
//VideoSource
ttProfile->VideoSourceConfiguration = new tt__VideoSourceConfiguration();
ttProfile->VideoSourceConfiguration->token = "video_source_config";
ttProfile->VideoSourceConfiguration->Name = "video_source_config";
ttProfile->VideoSourceConfiguration->UseCount = 1;
//ttProfile->VideoSourceConfiguration->SourceToken = "video_source";
ttProfile->VideoSourceConfiguration->Bounds = new tt__IntRectangle();
ttProfile->VideoSourceConfiguration->Bounds->height = 720;
ttProfile->VideoSourceConfiguration->Bounds->width =1280;
ttProfile->VideoSourceConfiguration->Bounds->y =1;
ttProfile->VideoSourceConfiguration->Bounds->x =1;
//VideoEncoder
ttProfile->VideoEncoderConfiguration = new tt__VideoEncoderConfiguration();
ttProfile->VideoEncoderConfiguration->token = "video_encoder_config";
ttProfile->VideoEncoderConfiguration->Name = "video_encoder_config";
ttProfile->VideoEncoderConfiguration->UseCount = 1;
ttProfile->VideoEncoderConfiguration->Encoding = tt__VideoEncoding__H264;
ttProfile->VideoEncoderConfiguration->Resolution = new tt__VideoResolution;
ttProfile->VideoEncoderConfiguration->Resolution->Width = 1280;
ttProfile->VideoEncoderConfiguration->Resolution->Height = 720;
ttProfile->VideoEncoderConfiguration->Quality = 7;
ttProfile->VideoEncoderConfiguration->RateControl = new tt__VideoRateControl;
ttProfile->VideoEncoderConfiguration->RateControl->FrameRateLimit = 30;
ttProfile->VideoEncoderConfiguration->RateControl->EncodingInterval = 0;
ttProfile->VideoEncoderConfiguration->RateControl->BitrateLimit = 2048;
ttProfile->VideoEncoderConfiguration->H264 = new tt__H264Configuration;
ttProfile->VideoEncoderConfiguration->H264->GovLength = 30;
ttProfile->VideoEncoderConfiguration->H264->H264Profile = tt__H264Profile__Baseline;
ttProfile->VideoEncoderConfiguration->Multicast = new tt__MulticastConfiguration;
ttProfile->VideoEncoderConfiguration->Multicast->Address = new tt__IPAddress;
ttProfile->VideoEncoderConfiguration->Multicast->Address->Type = tt__IPType__IPv4;
ttProfile->VideoEncoderConfiguration->Multicast->Address->IPv4Address = new std::string;
ttProfile->VideoEncoderConfiguration->Multicast->Address->IPv4Address->assign("0.0.0.0");
ttProfile->VideoEncoderConfiguration->Multicast->Port = 0;
ttProfile->VideoEncoderConfiguration->Multicast->TTL = 3;
ttProfile->VideoEncoderConfiguration->Multicast->AutoStart = false;
ttProfile->VideoEncoderConfiguration->SessionTimeout = 1000;
//PTZ
ttProfile->PTZConfiguration = new tt__PTZConfiguration;
ttProfile->PTZConfiguration->Name = "PTZConfig_Channel1";
ttProfile->PTZConfiguration->UseCount = 2;
//ttProfile->PTZConfiguration->NodeToken = "000";
ttProfile->PTZConfiguration->DefaultAbsolutePantTiltPositionSpace = new std::string;
ttProfile->PTZConfiguration->DefaultAbsolutePantTiltPositionSpace->assign("http://www.onvif.org/ver10/tptz/PanTiltSpaces/PositionGenericSpace");
ttProfile->PTZConfiguration->DefaultAbsoluteZoomPositionSpace = new std::string;
ttProfile->PTZConfiguration->DefaultAbsoluteZoomPositionSpace->assign("http://www.onvif.org/ver10/tptz/ZoomSpaces/PositionGenericSpace");
ttProfile->PTZConfiguration->DefaultRelativePanTiltTranslationSpace = new std::string;
ttProfile->PTZConfiguration->DefaultRelativePanTiltTranslationSpace->assign("http://www.onvif.org/ver10/tptz/PanTiltSpaces/TranslationGenericSpace");
ttProfile->PTZConfiguration->DefaultRelativeZoomTranslationSpace = new std::string;
ttProfile->PTZConfiguration->DefaultRelativeZoomTranslationSpace->assign("http://www.onvif.org/ver10/tptz/ZoomSpaces/TranslationGenericSpace");
ttProfile->PTZConfiguration->DefaultContinuousPanTiltVelocitySpace = new std::string;
ttProfile->PTZConfiguration->DefaultContinuousPanTiltVelocitySpace->assign("http://www.onvif.org/ver10/tptz/PanTiltSpaces/VelocityGenericSpace");
ttProfile->PTZConfiguration->DefaultContinuousZoomVelocitySpace = new std::string;
ttProfile->PTZConfiguration->DefaultContinuousZoomVelocitySpace->assign("http://www.onvif.org/ver10/tptz/ZoomSpaces/VelocityGenericSpace");
ttProfile->PTZConfiguration->DefaultPTZSpeed = new tt__PTZSpeed;
ttProfile->PTZConfiguration->DefaultPTZSpeed->PanTilt = new tt__Vector2D;
ttProfile->PTZConfiguration->DefaultPTZSpeed->PanTilt->space = new std::string;
ttProfile->PTZConfiguration->DefaultPTZSpeed->PanTilt->space->assign("http://www.onvif.org/ver10/tptz/PanTiltSpaces/GenericSpeedSpace");
ttProfile->PTZConfiguration->DefaultPTZSpeed->PanTilt->x = 0.8;
ttProfile->PTZConfiguration->DefaultPTZSpeed->PanTilt->y = 0.8;
ttProfile->PTZConfiguration->DefaultPTZSpeed->Zoom = new tt__Vector1D;
ttProfile->PTZConfiguration->DefaultPTZSpeed->Zoom->space = new std::string;
ttProfile->PTZConfiguration->DefaultPTZSpeed->Zoom->space->assign("http://www.onvif.org/ver10/tptz/ZoomSpaces/ZoomGenericSpeedSpace");
// LONG64 tout = 1000;
// ttProfile->PTZConfiguration->DefaultPTZTimeout = &tout;
ttProfile->PTZConfiguration->PanTiltLimits = new tt__PanTiltLimits;
ttProfile->PTZConfiguration->PanTiltLimits->Range = new tt__Space2DDescription;
ttProfile->PTZConfiguration->PanTiltLimits->Range->URI = "http://www.onvif.org/ver10/tptz/PanTiltSpaces/PositionGenericSpace";
ttProfile->PTZConfiguration->PanTiltLimits->Range->XRange = new tt__FloatRange;
ttProfile->PTZConfiguration->PanTiltLimits->Range->XRange->Min = -1.000000;
ttProfile->PTZConfiguration->PanTiltLimits->Range->XRange->Max = 1.000000;
ttProfile->PTZConfiguration->PanTiltLimits->Range->YRange = new tt__FloatRange;
ttProfile->PTZConfiguration->PanTiltLimits->Range->YRange->Min = -1.000000;
ttProfile->PTZConfiguration->PanTiltLimits->Range->YRange->Max = 1.000000;
ttProfile->PTZConfiguration->ZoomLimits = new tt__ZoomLimits;
ttProfile->PTZConfiguration->ZoomLimits->Range = new tt__Space1DDescription;
ttProfile->PTZConfiguration->ZoomLimits->Range->URI = "http://www.onvif.org/ver10/tptz/ZoomSpaces/PositionGenericSpace";
ttProfile->PTZConfiguration->ZoomLimits->Range->XRange = new tt__FloatRange;
ttProfile->PTZConfiguration->ZoomLimits->Range->XRange->Min = 0.000000;
ttProfile->PTZConfiguration->ZoomLimits->Range->XRange->Max = 1.000000;
mediaws__GetProfileResponse.Profile = ttProfile;
onvif1->processProfile(ttProfile->token);
}else if(mediaws__GetProfile->ProfileToken.compare("profile2") == 0){
tt__Profile * ttProfile2 = new tt__Profile();
ttProfile2->fixed = 0;
ttProfile2->token = "inf";
ttProfile2->Name = "Profile2";
//Video source conf
ttProfile2->VideoSourceConfiguration = new tt__VideoSourceConfiguration();
ttProfile2->VideoSourceConfiguration->token = "video_source_config2";
ttProfile2->VideoSourceConfiguration->Name = "video_source_config2";
ttProfile2->VideoSourceConfiguration->UseCount = 1;
//ttProfile2->VideoSourceConfiguration->SourceToken = "video_source2";
ttProfile2->VideoSourceConfiguration->Bounds = new tt__IntRectangle();
ttProfile2->VideoSourceConfiguration->Bounds->height = 720;
ttProfile2->VideoSourceConfiguration->Bounds->width =1280;
ttProfile2->VideoSourceConfiguration->Bounds->y =1;
ttProfile2->VideoSourceConfiguration->Bounds->x =1;
//Video encoder conf
ttProfile2->VideoEncoderConfiguration = new tt__VideoEncoderConfiguration();
ttProfile2->VideoEncoderConfiguration->token = "video_encoder_config2";
ttProfile2->VideoEncoderConfiguration->Name = "video_encoder_config2";
ttProfile2->VideoEncoderConfiguration->UseCount = 1;
ttProfile2->VideoEncoderConfiguration->Encoding = tt__VideoEncoding__H264;
ttProfile2->VideoEncoderConfiguration->Resolution = new tt__VideoResolution;
ttProfile2->VideoEncoderConfiguration->Resolution->Width = 1280;
ttProfile2->VideoEncoderConfiguration->Resolution->Height = 720;
ttProfile2->VideoEncoderConfiguration->Quality = 7;
ttProfile2->VideoEncoderConfiguration->RateControl = new tt__VideoRateControl;
ttProfile2->VideoEncoderConfiguration->RateControl->FrameRateLimit = 30;
ttProfile2->VideoEncoderConfiguration->RateControl->EncodingInterval = 0;
ttProfile2->VideoEncoderConfiguration->RateControl->BitrateLimit = 2048;
ttProfile2->VideoEncoderConfiguration->H264 = new tt__H264Configuration;
ttProfile2->VideoEncoderConfiguration->H264->GovLength = 30;
ttProfile2->VideoEncoderConfiguration->H264->H264Profile = tt__H264Profile__Baseline;
ttProfile2->VideoEncoderConfiguration->Multicast = new tt__MulticastConfiguration;
ttProfile2->VideoEncoderConfiguration->Multicast->Address = new tt__IPAddress;
ttProfile2->VideoEncoderConfiguration->Multicast->Address->Type = tt__IPType__IPv4;
ttProfile2->VideoEncoderConfiguration->Multicast->Address->IPv4Address = new std::string;
ttProfile2->VideoEncoderConfiguration->Multicast->Address->IPv4Address->assign("0.0.0.0");
ttProfile2->VideoEncoderConfiguration->Multicast->Port = 0;
ttProfile2->VideoEncoderConfiguration->Multicast->TTL = 3;
ttProfile2->VideoEncoderConfiguration->Multicast->AutoStart = false;
ttProfile2->VideoEncoderConfiguration->SessionTimeout = 1000;
//PTZ
ttProfile2->PTZConfiguration = new tt__PTZConfiguration;
ttProfile2->PTZConfiguration->Name = "PTZConfig_Channel1";
ttProfile2->PTZConfiguration->UseCount = 2;
//ttProfile->PTZConfiguration->NodeToken = "000";
ttProfile2->PTZConfiguration->DefaultAbsolutePantTiltPositionSpace = new std::string;
ttProfile2->PTZConfiguration->DefaultAbsolutePantTiltPositionSpace->assign("http://www.onvif.org/ver10/tptz/PanTiltSpaces/PositionGenericSpace");
ttProfile2->PTZConfiguration->DefaultAbsoluteZoomPositionSpace = new std::string;
ttProfile2->PTZConfiguration->DefaultAbsoluteZoomPositionSpace->assign("http://www.onvif.org/ver10/tptz/ZoomSpaces/PositionGenericSpace");
ttProfile2->PTZConfiguration->DefaultRelativePanTiltTranslationSpace = new std::string;
ttProfile2->PTZConfiguration->DefaultRelativePanTiltTranslationSpace->assign("http://www.onvif.org/ver10/tptz/PanTiltSpaces/TranslationGenericSpace");
ttProfile2->PTZConfiguration->DefaultRelativeZoomTranslationSpace = new std::string;
ttProfile2->PTZConfiguration->DefaultRelativeZoomTranslationSpace->assign("http://www.onvif.org/ver10/tptz/ZoomSpaces/TranslationGenericSpace");
ttProfile2->PTZConfiguration->DefaultContinuousPanTiltVelocitySpace = new std::string;
ttProfile2->PTZConfiguration->DefaultContinuousPanTiltVelocitySpace->assign("http://www.onvif.org/ver10/tptz/PanTiltSpaces/VelocityGenericSpace");
ttProfile2->PTZConfiguration->DefaultContinuousZoomVelocitySpace = new std::string;
ttProfile2->PTZConfiguration->DefaultContinuousZoomVelocitySpace->assign("http://www.onvif.org/ver10/tptz/ZoomSpaces/VelocityGenericSpace");
ttProfile2->PTZConfiguration->DefaultPTZSpeed = new tt__PTZSpeed;
ttProfile2->PTZConfiguration->DefaultPTZSpeed->PanTilt = new tt__Vector2D;
ttProfile2->PTZConfiguration->DefaultPTZSpeed->PanTilt->space = new std::string;
ttProfile2->PTZConfiguration->DefaultPTZSpeed->PanTilt->space->assign("http://www.onvif.org/ver10/tptz/PanTiltSpaces/GenericSpeedSpace");
ttProfile2->PTZConfiguration->DefaultPTZSpeed->PanTilt->x = 0.8;
ttProfile2->PTZConfiguration->DefaultPTZSpeed->PanTilt->y = 0.8;
ttProfile2->PTZConfiguration->DefaultPTZSpeed->Zoom = new tt__Vector1D;
ttProfile2->PTZConfiguration->DefaultPTZSpeed->Zoom->space = new std::string;
ttProfile2->PTZConfiguration->DefaultPTZSpeed->Zoom->space->assign("http://www.onvif.org/ver10/tptz/ZoomSpaces/ZoomGenericSpeedSpace");
// LONG64 tout = 1000;
// ttProfile2->PTZConfiguration->DefaultPTZTimeout = &tout;
ttProfile2->PTZConfiguration->PanTiltLimits = new tt__PanTiltLimits;
ttProfile2->PTZConfiguration->PanTiltLimits->Range = new tt__Space2DDescription;
ttProfile2->PTZConfiguration->PanTiltLimits->Range->URI = "http://www.onvif.org/ver10/tptz/PanTiltSpaces/PositionGenericSpace";
ttProfile2->PTZConfiguration->PanTiltLimits->Range->XRange = new tt__FloatRange;
ttProfile2->PTZConfiguration->PanTiltLimits->Range->XRange->Min = -1.000000;
ttProfile2->PTZConfiguration->PanTiltLimits->Range->XRange->Max = 1.000000;
ttProfile2->PTZConfiguration->PanTiltLimits->Range->YRange = new tt__FloatRange;
ttProfile2->PTZConfiguration->PanTiltLimits->Range->YRange->Min = -1.000000;
ttProfile2->PTZConfiguration->PanTiltLimits->Range->YRange->Max = 1.000000;
ttProfile2->PTZConfiguration->ZoomLimits = new tt__ZoomLimits;
ttProfile2->PTZConfiguration->ZoomLimits->Range = new tt__Space1DDescription;
ttProfile2->PTZConfiguration->ZoomLimits->Range->URI = "http://www.onvif.org/ver10/tptz/ZoomSpaces/PositionGenericSpace";
ttProfile2->PTZConfiguration->ZoomLimits->Range->XRange = new tt__FloatRange;
ttProfile2->PTZConfiguration->ZoomLimits->Range->XRange->Min = 0.000000;
ttProfile2->PTZConfiguration->ZoomLimits->Range->XRange->Max = 1.000000;
mediaws__GetProfileResponse.Profile = ttProfile2;
onvif1->processProfile(ttProfile2->token);
}
return SOAP_OK;
}
其中onvif1->processProfile(ttProfile->token);是传递给其他源文件进行解析使用的token值,但是在测试中debug是发不出的,求赐教