pjsip怎么在hungup前修改地址端口
时间: 2023-05-30 15:07:20 浏览: 99
在 PJSIP 中,可以使用 `pjsua_call_modify()` 函数在呼叫被挂断之前修改地址和端口。以下是一个简单的示例代码:
```c
void on_call_state(pjsua_call_id call_id, pjsip_event *e) {
pjsua_call_info ci;
pjsua_call_get_info(call_id, &ci);
if (ci.state == PJSIP_INV_STATE_DISCONNECTED) {
// Call is disconnected, modify the address and port
pjsua_call_setting call_opt;
pjsua_call_setting_default(&call_opt);
call_opt.flag = PJSUA_CALL_INCLUDE_DISABLED_MEDIA;
call_opt.sip_cfg = ci.last_invite->msg->line.req.uri;
pjsua_transport *udp_tp = pjsua_transport_get_transport_by_name(PJSIP_TRANSPORT_UDP, NULL);
pjsua_transport_set_remote_addr(udp_tp, &call_opt.sip_cfg->hostport);
// Modify the call
pjsua_call_modify(call_id, &call_opt);
}
}
```
在上面的代码中,`on_call_state()` 是一个回调函数,它会在呼叫状态发生变化时被调用。当呼叫状态变为 `PJSIP_INV_STATE_DISCONNECTED` (即呼叫被挂断)时,我们可以使用 `pjsua_call_setting` 结构体来设置呼叫选项,包括地址和端口。然后,我们可以使用 `pjsua_transport_set_remote_addr()` 函数来修改传输地址和端口。最后,我们可以使用 `pjsua_call_modify()` 函数来修改呼叫选项,包括地址和端口。
请注意,以上代码仅供参考,具体实现可能需要根据实际情况进行调整。
阅读全文