我利用海康SDK提供的解碼回呼函式對網路攝像頭采集的視頻流解碼、取流,然后通過opencv將視頻流保存為視頻檔案。測驗發現,同時采集6路視頻流是不丟幀的,但同時采集多于6個視頻流時,出現了丟幀的情況。我設定了播放緩沖區的大小,代碼如下:
PlayM4_SetDisplayBuf(nPort[dwWinIndex],10)
再增大緩沖區,同時采集多于6路的視頻流,同樣會出現丟幀的情況。
采集程序中,日志檔案中出現了多個報錯資訊,如下:
[2018-10-30 16:59:14.542][ERR] ID-IP-CHAN[7-10.2.x.x-1] [CGetStreamBase::GetStreamData] recv error[73], sysError[0]
[2018-10-30 16:59:14.542][ERR] ID-IP-CHAN[6-10.3.x.x-1] [CGetStreamBase::GetStreamData] recv status[73], length[0]
[2018-10-30 16:59:14.571][ERR] ID-IP-CHAN[1-10.3.x.x-1] [CGetStreamBase::GetStreamDataType] RTSP DATA error, pRecvdata is to short to get datatype
同時采集10個視頻流,CPU利用率為20%左右,使用的是超五類網線,應該不是網路帶寬的問題。
各位大神有沒有遇到類似的情況,請給出解決辦法,謝謝!
uj5u.com熱心網友回復:
從錯誤資訊來看還是網路接收失敗? 網路帶寬不夠? 任務管理看看占用了多少帶寬?uj5u.com熱心網友回復:
海康的sdk就可以保存為mp4檔案。 海康的sdk測驗過32路都不會丟幀uj5u.com熱心網友回復:
海康SDK沒有保存的介面嗎?uj5u.com熱心網友回復:
謝謝各位的回復!目前我做的是政府專案,是通過政府內網采集網路攝像頭的視頻流,會不會是公安部門對并行采集視頻流有限制?各位是否了解?uj5u.com熱心網友回復:
請問您是在局域網內同時采集32路視頻流嗎?還是外網?
uj5u.com熱心網友回復:
請問,海康SDK中的解碼回呼函式是靜態函式,這個函式應該是被所有執行緒所共享的,那多路視頻流傳過來,都從這個函式中解碼并取流,會不會出現記憶體溢位的情況?
uj5u.com熱心網友回復:
從錯誤資訊來看還是網路接收失敗? 網路帶寬不夠? 任務管理看看占用了多少帶寬?uj5u.com熱心網友回復:
您好,我現在是在做的專案涉及海康NVR采集多路視頻流部分。使用海康SDK,但是注冊多個實時流處理回呼函式,時進入解碼回呼函式會很卡,請問您是怎么解決的,可以給我一點思路嗎,就是海康NVR使用SDK獲取多路碼流資料。uj5u.com熱心網友回復:
硬體條件注意下,如果是網路相機,要千兆網卡和千兆網線會穩定一些uj5u.com熱心網友回復:
您好我從NVR中使用解碼回呼讀取兩路碼流時出現如下問題一直沒解決,可以幫我看下嗎:主要問題a:兩路碼流時,進入解碼回呼函式時間相隔較長120ms左右,列印nPort值時明顯卡頓延時;
主要問題b:在解碼回呼函式中列印引數時nPort時一直為固定值,nPort == 1無法區分碼流路數。
c:在顯示執行緒中顯示保存的碼流資料,因為nPort 固定,無法區別碼流路數,只能交替顯示出來兩個攝像頭畫面,不過畫面明顯卡頓,卡頓節奏和列印npot節奏對應。
d:當只注冊一路實時流回呼函式時,解碼與顯示均正常。
uj5u.com熱心網友回復:
這個不是問專案上的海康技術比較懂轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/31935.html
標籤:網絡編程
