一、概述
雙向視頻類產(chǎn)品中,設(shè)備端主動發(fā)起呼叫的場景分為兩種:設(shè)備當(dāng)前無用戶訪問和設(shè)備當(dāng)前有用戶訪問。兩種場景的處理流程不同,需根據(jù)實際連接狀態(tài)選擇對應(yīng)實現(xiàn)方式,核心依賴 TUTK P2P 音視頻傳輸API和消息推送通道。
二、場景一:設(shè)備當(dāng)前無用戶訪問
設(shè)備未被任何APP連接時,因手機(jī)端通常不攜帶固定UID,需通過消息服務(wù)器發(fā)起呼叫請求,引導(dǎo)用戶打開APP并建立P2P連接,進(jìn)而實現(xiàn)雙向視頻。
支持的消息推送通道:
支持的消息推送通道:
- TUTK 原生:KPNS(TUTK 推送服務(wù))
- 系統(tǒng)級推送:蘋果 APNS(iOS)、谷歌 FCM(Android 海外)
- 國內(nèi)廠商推送:華為 HMS Push、小米 MI Push、OPPO Push、vivo Push 等
- 自定義推送:廠商自建消息通道

圖 1:設(shè)備無用戶訪問時的呼叫流程示意圖
核心流程:
- 設(shè)備上線報到(可選):設(shè)備啟動后連接 TUTK 服務(wù)器完成上線(設(shè)備通常長期在線,此步驟非必需),同步設(shè)備狀態(tài)和綁定的APP賬號信息。
- 設(shè)備廣播呼叫消息:設(shè)備觸發(fā)呼叫事件(如觸發(fā)傳感器、用戶按鍵),通過預(yù)設(shè)的消息通道(如 KPNS/APNS)向綁定的手機(jī)端發(fā)送呼叫通知,消息需包含設(shè)備 UID、呼叫類型等關(guān)鍵信息。
- 用戶響應(yīng)呼叫:手機(jī)端收到推送消息,用戶點(diǎn)擊消息后喚醒 APP(需配置APP的推送喚醒權(quán)限)。
- APP 發(fā)起 P2P 連線:APP 啟動后,讀取消息中的設(shè)備 UID,調(diào)用 TUTK P2P SDK 接口發(fā)起連接請求,完成身份認(rèn)證和 P2P 隧道建立。
- 雙向音視頻傳輸:P2P 連線成功后,APP 與設(shè)備端分別啟動音視頻采集、編碼,通過 SDK 提供的音視頻傳輸API互相發(fā)送數(shù)據(jù),實現(xiàn)實時通話。
- 通話結(jié)束掛斷:任意一方觸發(fā)掛斷操作,APP 和設(shè)備端停止音視頻采集,釋放 P2P 連接資源。
三、場景二:設(shè)備當(dāng)前有用戶訪問
設(shè)備已被 APP 成功連接(用戶正在查看實時視頻或已建立會話),此時無需通過消息推送(也可以設(shè)計為同時呼叫其他綁定此設(shè)備的用戶,參考場景一),直接通過 P2P 通道發(fā)送控制指令即可觸發(fā)雙向視頻切換。
核心優(yōu)勢:
核心優(yōu)勢:
- 無需依賴外部消息通道,響應(yīng)速度快;
- SDK v3.3+ 支持全雙工通道,無需額外建立新通道,直接使用現(xiàn)有 0 通道傳輸音視頻數(shù)據(jù)。
核心流程:
- 設(shè)備觸發(fā)呼叫事件:設(shè)備需發(fā)起雙向視頻(如用戶按下通話鍵),此時已存在有效的 P2P 連接(APP 已訪問設(shè)備)。
- 設(shè)備發(fā)送控制指令:設(shè)備通過 avSendIOCtrl 接口發(fā)送雙向視頻呼叫指令(如 IOTYPE_USER_IPCAM_CALL_REQ)給已連接的 APP。
- APP 響應(yīng)指令:APP 通過 avRecvIOCtrl 接口接收指令后,自動啟動本地音視頻采集、編碼模塊。
- 全雙工音視頻傳輸:APP 與設(shè)備端通過現(xiàn)有 P2P 通道(0 通道),使用音視頻傳輸API互相發(fā)送數(shù)據(jù),實現(xiàn)雙向通話(無需額外創(chuàng)建通道)。
- 通話結(jié)束/切換:掛斷后,APP 可切換回單向查看模式(停止本地音視頻發(fā)送),或直接釋放連接。
四、對接流程
P2P SDK 為雙向視頻呼叫流程的核心依賴,需根據(jù)場景組合使用,具體請參考以下章節(jié):
