我是东山啊\n 2023-03-29 11:28 采纳率: 0%
浏览 62
已结题

exosip请求失败404原因会有那些


osip_message_t* invite = NULL;

    char from[256],to[256],subject[256];

    snprintf(from,256,"sip:%s@%s:%d","34020000002000000001","192.168.1.136",m_sipPort);
    snprintf(to,256,"sip:%s@%s:%d","34020000001320000001","192.168.1.87",m_sipPort);
    snprintf(subject,256,"%s:0,%s:0","34020000001320000001","34020000002000000001");

    int ret = eXosip_call_build_initial_invite(m_exCtx, &invite,to,from,NULL,subject);
    if(ret != 0)
    {
        fprintf(stderr,"eXosip_call_build_initial_invite Failed!");
        return;
    }
    char body[4096];
    int bodyLen = snprintf(body, 4096,
                           "v=0\r\n"
                           "o=34020000001310000001 0 0 IN IP4 192.168.1.136\r\n"
                           "s=Play\r\n"
                           "c=IN IP4 192.168.1.136\r\n"
                           "t=0 0\r\n"
                           "m=video 5060 RTP/AVP 96 97 98\r\n"
                           "a=rtpmap:96 PS/90000\r\n"
                           "a=rtpmap:97 MPEG4/90000\r\n"
                           "a=rtpmap:98 H264/90000\r\n"
                           "a=recvonly\r\n");
    osip_message_set_body(invite, body, bodyLen);
    osip_message_set_content_type(invite, "application/sdp");
    eXosip_lock(m_exCtx);
    ret = eXosip_call_send_initial_invite(m_exCtx, invite);
    if(0 != ret)
    {

        qDebug() << "send error: " << strerror(ret) << "\n";
        fprintf(stderr,"send invitial invite failed!\n");
        qDebug() << ret << "\n";

    }
    eXosip_unlock(m_exCtx);

通过以上代码向大华摄像头请求实时视频流,返回404. 找不到问题在哪 ,希望解答一下

  • 写回答

5条回答 默认 最新

  • l527074 2023-03-29 12:48
    关注

    此代码似乎是用 C 编写的,并且使用 eXosip 库来构建和发送 SIP 邀请请求。邀请请求在其正文中包含一条 SDP 消息,该消息描述了媒体格式和传输信息。

    该代码首先初始化指向名为“invite”的osip_message_t对象的指针,并为 INVITE 请求的“from”、“to”和“subject”字段初始化三个 char 数组。“发件人”和“收件人”字段的格式为 SIP URI,其中包含主叫方和被叫方的用户 ID 和 IP 地址。“主题”字段包含有关会话的信息,包括相关双方的 ID。

    然后,代码调用 eXosip 库函数“eXosip_call_build_initial_invite”来构建邀请请求,传入 eXosip 上下文和“to”、“from”和“subject”字段。如果此函数返回非零值,则会打印一条错误消息并返回该函数。

    然后,代码在“body”字符数组中构造 SDP 消息,并使用“osip_message_set_body”函数将其设置为 INVITE 消息的正文。消息的内容类型使用“osip_message_set_content_type”功能设置为“应用程序/sdp”。

    最后,代码调用 eXosip 库函数“eXosip_call_send_initial_invite”来发送邀请请求。如果此函数返回非零值,则打印错误消息。

    请务必注意,此代码片段不包括所有潜在故障场景的错误处理,因此可能需要额外的错误检查和处理才能实现可靠的实现。

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 3月30日
  • 赞助了问题酬金15元 3月29日
  • 创建了问题 3月29日