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. 找不到问题在哪 ,希望解答一下

此代码似乎是用 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”来发送邀请请求。如果此函数返回非零值,则打印错误消息。

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

exosip请求失败404原因的可能是视频流地址、端口、通道或其它参数等没有设置正确,导致无法获取视频流。

  • 这篇博客: centos编译exosip2 -5.1.0中的 3、编译exosip库 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 	cd  libexosip2-5.1.0
    	./configure  --prefix=/home/sip/
    	make
    	make install
    

以下答案由GPT-3.5大模型与博主波罗歌共同编写:
根据你提供的代码,我看不出直接导致404错误的问题。404错误通常表示客户端请求了不存在的资源,所以你需要检查以下几点:

  1. 确认摄像头的IP地址、端口号、SIP信息是否正确。请先通过其他工具(如sipp)测试摄像头的SIP服务是否正常。

  2. 确认OSIP/eXosip库初始化是否正确。你需要在程序启动时初始化库,并使用eXosip_listen_address()绑定SIP地址和端口号。

  3. 确认从摄像头返回的SIP错误消息。你可以通过eXosip_event_get_response()方法获取服务器返回的SIP消息,并检查是否包含响应错误码404。

代码示例:

eXosip_event_t *evt = NULL;
int cnt = 0;
while(1) {
    evt = eXosip_event_wait(0, 500); // 等待500ms,获取eXOSIP事件
    if(evt == NULL) {
        cnt ++;
        if(cnt > 120) { // 60秒内没有事件则退出
            break;
        }
        continue;
    }
    if(evt->type == EXOSIP_CALL_INVITE_ANSWERED) {
        if(evt->response->status_code == 200) {
            // 成功响应,获取SDP信息、打开视频等操作
            // ...
            break;
        } else if(evt->response->status_code == 404) {
            // 404错误,资源未找到
            fprintf(stderr, "Error: 404 not found\n");
            break;
        } else {
            // 其他错误
            fprintf(stderr, "Error: %d\n", evt->response->status_code);
            break;
        }
    }
    // 其他eXOSIP事件处理
    // ...
}

希望以上信息对你有所帮助。如果你对具体问题有更多的信息或代码,可以提供给我,我会尽力帮你解决。
如果我的回答解决了您的问题,请采纳!

该回答引用ChatGPT
根据代码,您使用的是eXosip库向大华摄像头发送SIP INVITE请求,请求实时视频流。但是,您收到了404错误响应,表示请求的资源未找到。
404错误可能有多种原因,以下是一些可能的原因:
1. 请求的URI不正确或不存在。请确保您使用的URI是正确的,并且大华摄像头上确实存在该资源。
2. 大华摄像头可能没有正确配置或启用SIP服务。请确保大华摄像头已正确配置SIP服务,并且已启用该服务。
3. 大华摄像头可能没有正确响应您的请求。请确保您的请求已正确格式化,并且大华摄像头已正确响应您的请求。
4. 网络连接问题。请确保您的网络连接正常,并且您可以通过其他方式访问大华摄像头。
您可以通过以下步骤来进一步分析问题:
1. 检查您的请求URI是否正确,并确保大华摄像头上存在该资源。
2. 检查大华摄像头是否已正确配置SIP服务,并已启用该服务。
3. 检查您的请求是否正确格式化,并确保大华摄像头已正确响应您的请求。
4. 检查您的网络连接是否正常,并确保您可以通过其他方式访问大华摄像头。
如果您仍然无法解决问题,请提供更多详细信息,例如完整的错误消息和大华摄像头的配置信息,以便我们更好地帮助您解决问题。