不管是網頁直播還是手機直播,都不可避免會有卡頓的問題,作為視頻平臺的開發者,我們知道視頻卡頓的原因有很多,包括時間戳問題以及網路環境問題,此外還有一種情況,就是在我們已經開發的視頻平臺EasyCVR中,接入過多通道設備,也會出現卡頓問題,

實際該卡頓問題和時間戳、網路等都沒有必然聯系,因此我們可以從sql陳述句檢查該問題出現的原因,通過檢查sql陳述句列印,我們發現無論接入多少設備通道,后端都會將所有的通道資訊每個檢查一遍,再回傳給前端,這種邏輯直接導致了后端作業量的暴漲,因此帶來了卡頓現象,

我們將代碼重構,當前端查詢設備時候,添加分頁欄位,start 和limit
秉著展示多少查詢多少的原則進行修改,添加如下代碼:
if params["start"] != "" && params["limit"] != "" {
start, _ = strconv.Atoi(params["start"])
limit, _ = strconv.Atoi(params["limit"])
}
ack := NewMsgAck()
ack.EasyDarwin.Header.MessageType = MSG_SC_SERVER_GET_CHANNELS_ACK
rows := make([]map[string]interface{}, 0)
db.SQLite.LogMode(true)
channelscount := cvrservice.GetDeviceService().GetChannels(params["device"], params["channel"], params["q"], 0, 0)
channels := cvrservice.GetDeviceService().GetChannels(params["device"], params["channel"], params["q"], uint(start), uint(limit))
tempdbDBChannel := make([]cvrdo.DBChannelInfo, 0)
再去請求查詢通,此時生成的sql已經是攜帶分頁引數過后的了,

同時檢查介面回應速度也降低到200毫秒左右,

如果對EasyCVR有興趣,歡迎聯系我們獲取測驗賬號進行測驗,當然TSINGSEE青犀視頻其他智能分析平臺皆提供測驗,更多詳情可了解TSINGSEE青犀視頻官方網站,

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/261102.html
標籤:其他
上一篇:C++
下一篇:并查集(C++實作初級)
