Docs
Resources
Tools
News
to top

会话管理

音视频呼叫

本章小节:

发起音视频呼叫

start call invite

图 1. 发起音视频呼叫过程

1

GUI 调用 Mtc_SessCall 发起呼叫

  • pcUri 呼叫方的 URI 地址
  • zCookie 用户设置的 Cookie 值
  • bAudio 若发起的视频呼叫该值为 ZTRUE ,若为语音呼叫该值为 ZFALSE
  • bVoice ZTRUE

注意:pcUri 要确保是正确的 SIP URI 或 TEL URI。当用户在拨叫窗口中输入对方电话号码是,要先完成 SIP URI/TEL URI 的组装。

  • sip:phone@domain 或者 tel:phone

dwCookie 是用于实现会话与 GUI 会话窗口的绑定(比如句柄),此值可用可不用。如果想使用 dwCookie 映射会话, GUI 可在后续会话状态通知中使用 Mtc_SessGetCookie 获取 dwCookie。无论是否使用 dwCookie,GUI 应该提供根据 dwSessId 找到 GUI 会话窗口的方法, 使得收到会话状态的回调通知时(比如在 Mtc_CallCbSetAlerted 中设置的回调)时能够找到已经存在的 GUI 会话窗口,更新界面显示。

输出参数 pdwSessId, 一般是保存在 GUI 会话窗口中,用于后续会话操作。

2

SDK 向服务器发送 INVITE 请求。

3

服务器响应 100 Trying。

4

服务器响应 180 Ringing。

5

SDK 通过 Mtc_CallCbSetAlerted 设置的回调通知界面振铃事件。

6

UI 更新界面,显示对方已经振铃。

7

服务器响应 200 OK。

8

SDK 响应 ACK。

9

SDK 和服务器开始发送、接收 RTP/SRTP 流。

10

SDK 通过 Mtc_CallCbSetTalking 上报呼叫已接通事件,界面在收到该事件后应该调用 Mtc_SessHasVideo 接口确认当前会话协商的结果是否有视频流,若存在视频流应该调用 ZMF 接口启动摄像头。

11

UI 更新界面,显示通话中。

表 1. 发起音视频呼叫过程说明

接听音视频呼叫

start to call accept

图 2. 接听音视频呼叫过程

1

SDK 收到服务器发来的 INVITE 请求。

2

SDK 通过 Mtc_CallCbSetIncoming 回调上报收到通话邀请,界面可以通过 Mtc_SessGetPeerUri 获取对方的名称和 URI 地址, 同时可以通过 Mtc_SessPeerOfferVideo 判断是否是视频呼叫。

3

UI 更新界面,显示收到通话邀请。

4

SDK 向服务器发送 100 Trying。

5

SDK 向服务器发送 180 Ringing。

6

UI 调用 Mtc_SessAnswer 接口,应答通话邀请。

  • dwSessId 会话的 Session ID
  • zCookie 用户设置的 Cookie值
  • bAudio 该值为 ZTRUE
  • bVideo 若同意进行视频会话该值为 ZTRUE,若不同意进行视频会话该值为 ZFALSE
7

SDK 向服务器发送 200 OK。

8

服务器向 SDK 发送 ACK。

9

SDK 和服务器开始发送、接收 RTP/SRTP 流。

10

SDK 通过 Mtc_CallCbSetTalking 回调上报通话已经接通,界面在收到该事件后应该调用 Mtc_SessHasVideo 接口 确认当前会话协商的结果是否有视频流,若存在视频流应该调用 ZMF 接口启动摄像头。

11

UI 更新界面,显示通话中。

表 2. 接听音视频呼叫过程说明

取消音视频呼叫

start cancel call

图 3. 取消音视频呼叫过程

1

UI 调用 Mtc_SessCall 接口,发起一个音视频呼叫。

  • pcUri 呼叫方的 URI 地址
  • zCookie 用户设置的 Cookie 值
  • bAudio 若发起的视频呼叫该值为 ZTRUE,若为语音呼叫该值为 ZFALSE
  • bVoice ZTRUE

注意: pcUri 要确保是正确的 SIP URI 或 TEL URI。当用户在拨叫窗口中输入对方电话号码是,要先完成 SIP URI/TEL URI 的组装。

  • URL 地址需要直接封装为 sip:phone@domain 或者 tel:phone

dwCookie 是用于实现会话与 GUI 会话窗口的绑定(比如句柄),此值可用可不用。如果想使用 dwCookie 映射会话, GUI 可在后续会话状态通知中使用 Mtc_SessGetCookie 获取 dwCookie。无论是否使用 dwCookie,GUI 应该提供根据 dwSessId 找到 GUI 会话窗口的方法, 使得收到会话状态的回调通知时(比如在 Mtc_CallCbSetAlerted 中设置的回调)时能够找到已经存在的 GUI 会话窗口,更新界面显示。

输出参数 pdwSessId, 一般是保存在 GUI 会话窗口中,用户后续会话操作。

2

SDK 向服务器发送 INVITE 请求。

3

服务器响应 100 Trying。

4

服务器响应 180 Ringing。

5

SDK 通过 Mtc_CallCbSetAlerted 设置的回调通知界面振铃事件。

6

UI 更新界面,显示对方已经振铃。

7

UI 调用Mtc_SessTerm 接口,取消音视频通话。

  • dwSessId 会话的session ID
  • dwReason EN_MTC_CALL_TERM_REASON_NORMAL
8

SDK 向服务器发送 CANCEL 请求。

9

服务器响应 200 OK。

10

服务器向 SDK 发送 487 Request Terminated。

11

SDK 响应 ACK, 结束通话。

表 3. 取消音视频呼叫过程说明

拒绝音视频呼叫

start to decline call

图 4. 拒绝音视频呼叫过程

1

SDK 收到服务器发来的 INVITE 请求。

2

SDK 通过 Mtc_CallCbSetIncoming 回调上报收到通话邀请,界面可以通过 Mtc_SessGetPeerUri 获取对方的名称和 URI 地址, 同时可以通过 Mtc_SessHasVideo 判断是否是视频呼叫。

3

UI 更新界面,显示收到通话邀请。

4

SDK 向服务器发送 100 Trying。

5

SDK 向服务器发送 180 Ringing。

6

UI 调用 Mtc_SessTerm 接口,取消音视频通话。

  • dwSessId 会话的session ID
  • dwReason 为EN_MTC_CALL_TERM_REASON_DECLINE
7

SDK 向服务器发送 603 Decline 请求。

8

服务器响应 200 OK,结束通话。

表 4. 拒绝音视频呼叫过程说明

主动终止音视频呼叫

start to call term

图 5. 主动终止音视频呼叫过程

1

UI 调用 Mtc_SessTerm 接口,主动发起终止呼叫。

  • dwSessId 会话的session ID
  • dwReason EN_MTC_CALL_TERM_REASON_NORMAL
2

SDK 向服务器发送 BYE 请求。

3

服务器响应 200 OK,通话结束。

表 5. 主动终止音视频呼叫过程说明

被动终止音视频呼叫

start to call termed

图 6. 被动终止音视频呼叫过程

1

服务器向 SDK 发送 BYE 请求。

2

SDK 通过 Mtc_CallCbSetTermed 回调上报通话被终止事件。

3

UI更新界面,显示通话被终止。

4

SDK 响应 200 OK,通话结束。

表 6. 被动终止音视频呼叫过程说明

Juphoon © 2015 中文(简体)
关于我们 JusTalk 开发人员 招聘 隐私政策