Linux下基于Onvif获取RTSP地址(三)

前面步骤是为获取RTSP作准备,这里需要使用上述生成的文件,调用相关接口获取RTSP地址

3.编写实现方法获取RTSP

废话不多说,直接上我的代码
GetRTSP.cpp

#include "wsdd.h"
#include "wsseapi.h"
#include "wsaapi.h"
#include <stdio.h>
#include <string.h>

#define ONVIF_USER "XXXX"   //用户名
#define ONVIF_PASSWORD "******"  //密码 
#define M 150
char str1[M],str2[M];

//此处的结构体为输出的rtsp字符串做准备
typedef struct stack{
   
  char *Data[M];
  int Top;
}Stack

Stack stk;
int push(char *c){
   
   if (stk.Top==M-1){
   
          printf("栈满");
   }
   else {
   
          stk.Data[++(stk.Top)]=c;
          return 0;
   }
}

char *pop(){
   
   if(stk.Top==-1){
   
          printf("栈空");
   }
   else{
   
      char *c;
      c=stk.Data[stk.Top--];
      return c;
   }
}
int HasDev = 0;//the number of devices
//初始化soap函数
static struct soap* ONVIF_Initsoap(struct SOAP_ENV__Header *header, const char *was_To, const char *was_Action, int timeout)
{
   
    struct soap *soap = NULL;
    unsigned char macaddr[6];
    char _HwId[1024];
    unsigned int Flagrand;
    soap = soap_new();
    if(soap == NULL)
    {
   
        printf("[%d]soap = NULL\n", __LINE__);
        return NULL;
    }
     soap_set_namespaces( soap, namespaces);
    //超过1秒钟没有数据就退出
    if (timeout > 0)
    {
   
        soap->recv_timeout = timeout;
        soap->send_timeout = timeout;
        soap->connect_timeout = timeout;
    }
    else
    {
   
        //如果外部接口没有设备默认超时时间的话,我这里给了一个默认值3s
        soap->recv_timeout    = 3;
        soap->send_timeout    = 3;
        soap->connect_timeout = 3;
    }
    soap_default_SOAP_ENV__Header(soap, header);

    // 为了保证每次搜索的时候MessageID都是不相同的!因为简单,直接取了随机值
    srand((int)time(0));
    Flagrand = rand()%9000 + 1000; //保证四位整数
    macaddr[0] = 0x1; macaddr[1] = 0x2; macaddr[2] = 0x3; macaddr[3] = 0x4; macaddr[4] = 0x5; macaddr[5] = 0x6;
    sprintf(_HwId,"urn:uuid:%ud68a-1dd2-11b2-a105-%02X%02X%02X%02X%02X%02X",
            Flagrand, macaddr[0], macaddr[1], macaddr[2], macaddr[3], macaddr[4], macaddr[5]);
    header->wsa__MessageID =(char *)malloc
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值