日韩美女乱婬AAA高清视频_国产色爱AV资源综合区_国产女同性黄网在线观看_欧美日韩一卡2卡3卡4卡新区乱码_俺来也俺也啪www色_精品久久久久久综合日本_99国内偷揿国产精品人妻_国产蜜芽剧果冻传媒_日本特级aaaaaaaa片_国产偷人妻精品一区二区在线

簡體中文

基于AVAPIs模塊開發(fā)DVR設(shè)備

DVR 多通道實作流程 | TUTK P2P SDK 開發(fā)手冊

一、概述

DVR多通道實作流程與普通IPCamera邏輯一致,核心為「先建立IOTC連線創(chuàng)建主通道 → 同步指令創(chuàng)建剩余通道」,全程涉及通道分配、指令收發(fā)、線程優(yōu)化等關(guān)鍵環(huán)節(jié)。具體基礎(chǔ)流程可參考:
主通道建立后,需完成剩余通道的指令同步、創(chuàng)建與銷毀,保障多通道數(shù)據(jù)收發(fā)的穩(wěn)定性與效率。

二、主要流程

1. APP端

(1)APP發(fā)送指令IOTYPE_USER_IPCAM_GETSUPPORTSTREAM_REQ查詢DVR當(dāng)前的通道數(shù);

(2)獲取通道數(shù)及對應(yīng)IOTC通道后,創(chuàng)建線程并調(diào)用avClientStartEx創(chuàng)建剩余通道;

(3)在各獨立通道完成數(shù)據(jù)收發(fā)操作。

2. 設(shè)備端

(1)設(shè)備端接收指令IOTYPE_USER_IPCAM_GETSUPPORTSTREAM_REQ,回復(fù)當(dāng)前支持的通道數(shù)及對應(yīng)IOTC通道;

(2)創(chuàng)建線程并調(diào)用avServStartEx創(chuàng)建剩余通道;

(3)在各獨立通道完成數(shù)據(jù)收發(fā)操作。

三、通道分配說明

以16位DVR為例,通道分配遵循「索引與IOTC通道號一一對應(yīng)」原則,具體分配如下:
通道索引IOTC通道號(預(yù)分配)avClientStartEx所用通道
(inconfig.iotc_channel_id)
avServStartEx所用通道
(inconfig.iotc_channel_id)
0000
1111
2222
............
15151515

四、線程優(yōu)化

1. avRecvIOCtrl 輪詢優(yōu)化
多通道場景下,可將avRecvIOCtrl指令接收邏輯集中至單個線程輪詢,減少線程資源占用,核心實現(xiàn)如下:
while(!isRequestBreak){    // 輪詢多個通道的指令    foreach(auto avIndex,avIndexList){        int ret = avRecvIOCtrl(avIndex,ioctrl,buffer,timeout=10ms);        if(ret == AV_ER_TIMEOUT){            continue;                }        else if(ret < 0){            // 主通道異常直接中斷輪詢            if(isMainChannel(avIndex)){                break;            }            else{                // 移除異常通道并嘗試重建                removeAvIndexFromList(avIndex);                reConstructThisChannel(avIndex);                continue;                      }                }        // 指令處理避免耗時操作,防止阻塞其他通道        handleCommandRequest(avIndex,ioctrl,buffer);    } }
說明:輪詢超時時間建議設(shè)為10ms,指令處理邏輯需輕量化,避免影響其他通道的指令接收效率。
2. avSendIOCtrl 隊列優(yōu)化
針對avSendIOCtrl指令發(fā)送,建議為每個avIndex單獨創(chuàng)建發(fā)送隊列,由專屬線程按序處理,核心實現(xiàn)如下:
void commandSendWorker(void* arg){    while(!isRequestBreak){        // 從隊列中獲取IO數(shù)據(jù)并按序發(fā)送        ioData* data = dequeue(ioQueue);        if(data){            int ret = avSendIOCtrl(avIndex,data.ioctrl,data.ioBuffer,data.size);            free(data);              continue;                          }        else{            usleep(10*1000);                }    } }
說明:隊列化發(fā)送可避免指令亂序,usleep休眠10ms減少空輪詢功耗,適配嵌入式設(shè)備低功耗需求。

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

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

+86 755 27702549

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

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

關(guān)注“TUTK”

TUTK服務(wù)盡在掌握

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

TUTK服務(wù)盡在掌握

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

返回頂部