日日摸夜夜添夜夜爽出水_dvd碟片色爱_麻豆wwwcom内射软件_国产欧美色一区二区三区_中字幕视频在线永久在线观看免费_99久久在线视频精品店_国产精品1区2区3区在线观看 _两性午夜色视频免费网站_国产精品女同久久久久电影院_国产一区二区不卡亚洲涩情

簡(jiǎn)體中文

基于AVAPIs的對(duì)講實(shí)現(xiàn)

基于AVAPIs的對(duì)講實(shí)現(xiàn) | TUTK P2P SDK 開發(fā)指南
基于AVAPIs的對(duì)講架構(gòu)及主通道復(fù)用示意圖

圖 1:基于AVAPIs的對(duì)講架構(gòu)及主通道復(fù)用示意圖

一、概述

TUTK P2P SDK v3.3+ 版本默認(rèn)支持?jǐn)?shù)據(jù)全雙工通信,無需額外創(chuàng)建獨(dú)立通道。P2P連接建立后,會(huì)自動(dòng)創(chuàng)建主通道(基于 IOTC 0 通道,通過 avClientStartExavServStartEx 接口參數(shù)綁定),客戶端可通過該主通道同時(shí)實(shí)現(xiàn)直播視頻播放、音頻監(jiān)聽和對(duì)講音頻發(fā)送,無需額外開辟通道資源。

二、音頻格式同步(公版APP標(biāo)準(zhǔn)流程)

對(duì)講功能啟動(dòng)前,APP端需先向設(shè)備查詢支持的音頻格式(編碼方式、采樣率、位寬等),確保兩端音頻參數(shù)一致,避免播放異常。該過程通過 IO 控制指令(具體可參考:公版IOCommand定義)交互完成。
(一)APP端:查詢音頻格式(發(fā)送請(qǐng)求)
APP 調(diào)用 avSendIOCtrl 發(fā)送 IOTYPE_USER_IPCAM_GETAUDIOOUTFORMAT_REQ 指令,傳入攝像頭通道索引,查詢?cè)O(shè)備對(duì)講支持的音頻格式。
// 查詢音頻格式請(qǐng)求結(jié)構(gòu)體 typedef struct {    unsigned int channel; // camera index(攝像頭索引,多攝像頭場(chǎng)景需指定)    char reserved[4];     // 預(yù)留字段,無需賦值 } SMsgAVIoctrlGetAudioOutFormatReq;
(二)設(shè)備端:回復(fù)音頻格式(響應(yīng)請(qǐng)求)
設(shè)備端通過 avRecvIOCtrl 接收查詢請(qǐng)求后,回復(fù) IOTYPE_USER_IPCAM_GETAUDIOOUTFORMAT_RESP 指令,返回支持的音頻參數(shù)。
// 音頻格式響應(yīng)結(jié)構(gòu)體 typedef struct {    unsigned int channel;      // camera index(與請(qǐng)求的攝像頭索引一致)    int format;                // 音頻編碼格式(參考 ENUM_CODECID 枚舉)    char sample_rate;          // 采樣率(參考 Sample_Rate 枚舉)    char bitdata;              // 位寬(參考 DATABITS 枚舉)    char channels;             // 支持的聲道數(shù)(1=單聲道,2=立體聲)    char avservchannel;        // 對(duì)講使用的通道類型:0=子通道;1=主通道;其他=子通道(默認(rèn)0) } SMsgAVIoctrlGetAudioOutFormatResp;
  • 字段說明:
    • format:音頻編碼格式,取值來自 CodecId 枚舉(如 G711A、AAC 等);
    • sample_rate:采樣率,取值來自 Sample_Rate 枚舉(如 8K、16K 等);
    • bitdata:數(shù)據(jù)位寬,取值來自 DATABITS 枚舉(僅支持8位/16位);
    • avservchannel:推薦使用主通道(填1),復(fù)用現(xiàn)有連接資源。

三、對(duì)講實(shí)現(xiàn)方式(主通道全雙工傳輸)

主通道本身支持全雙工通信,可同時(shí)傳輸“設(shè)備→APP的直播音頻”和“APP→設(shè)備的對(duì)講音頻”。APP通過特定IO指令通知設(shè)備開啟/關(guān)閉對(duì)講,之后通過音頻傳輸API發(fā)送/接收對(duì)講數(shù)據(jù)。
(一)核心IO控制指令(SDK內(nèi)置)
對(duì)講啟停通過以下2條SDK內(nèi)置IO指令控制(參考SDK Readme.htm第五部分):
  • IOTYPE_USER_IPCAM_SPEAKERSTART:開啟對(duì)講(APP→設(shè)備)
  • IOTYPE_USER_IPCAM_SPEAKERSTOP:關(guān)閉對(duì)講(APP→設(shè)備)
(二)開啟對(duì)講流程
  • 步驟1:APP端發(fā)送開啟指令
    • 音頻格式同步完成后,APP 調(diào)用 avSendIOCtrl 發(fā)送 IOTYPE_USER_IPCAM_SPEAKERSTART 指令,通知設(shè)備準(zhǔn)備接收對(duì)講音頻;
    • 指令無需額外參數(shù)(參數(shù)長(zhǎng)度填0),僅通過指令類型標(biāo)識(shí)操作。
  • 步驟2:APP端啟動(dòng)音頻采集與發(fā)送
    • APP 啟動(dòng)本地麥克風(fēng)采集音頻,按設(shè)備支持的格式(編碼、采樣率等)進(jìn)行編碼;
    • 調(diào)用 avSendAudioData 接口,通過主通道將編碼后的對(duì)講音頻數(shù)據(jù)發(fā)送給設(shè)備。
  • 步驟3:設(shè)備端接收開啟指令并準(zhǔn)備接收
    • 設(shè)備通過 avRecvIOCtrl 接收 IOTYPE_USER_IPCAM_SPEAKERSTART 指令,確認(rèn)開啟對(duì)講;
    • 設(shè)備初始化音頻接收緩沖區(qū),調(diào)用 avRecvAudioData 接口監(jiān)聽主通道的對(duì)講音頻數(shù)據(jù)。
  • 步驟4:設(shè)備端播放對(duì)講音頻
    • 設(shè)備接收音頻數(shù)據(jù)后,按約定格式解碼,通過設(shè)備揚(yáng)聲器播放,完成“APP→設(shè)備”的對(duì)講音頻傳輸。
(三)關(guān)閉對(duì)講流程
對(duì)講結(jié)束時(shí),APP發(fā)送關(guān)閉指令,設(shè)備停止接收音頻,雙方釋放相關(guān)資源:
  • 步驟1:APP端發(fā)送關(guān)閉指令:APP 調(diào)用 avSendIOCtrl 發(fā)送 IOTYPE_USER_IPCAM_SPEAKERSTOP 指令;
  • 步驟2:APP端停止采集與發(fā)送:關(guān)閉麥克風(fēng),停止音頻編碼和 avSendAudioData 調(diào)用;
  • 步驟3:設(shè)備端停止接收與播放:設(shè)備接收關(guān)閉指令后,停止 avRecvAudioData 監(jiān)聽,關(guān)閉揚(yáng)聲器,釋放音頻緩沖區(qū)。

即刻開啟您的物聯(lián)網(wǎng)之旅

聯(lián)系解決方案專家
Kalay App
資訊安全白皮書
全球?qū)@季?/a>
解決方案
新聞動(dòng)態(tài)
公司動(dòng)態(tài)
行業(yè)資訊
媒體報(bào)道
永續(xù)發(fā)展
經(jīng)營(yíng)者的話
社會(huì)參與
環(huán)境永續(xù)
公司治理

+86 755 27702549

7×24小時(shí)服務(wù)熱線

法律聲明 隱私權(quán)條款

關(guān)注“TUTK”

TUTK服務(wù)盡在掌握

? 2022 物聯(lián)智慧科技(深圳)有限公司版權(quán)所有粵ICP備14023641號(hào)
在線咨詢
掃一掃

TUTK服務(wù)盡在掌握

全國免費(fèi)服務(wù)熱線
+86 755 27702549

返回頂部