視頻輪詢在視頻監控系統中是一個基礎的核心功能,尤爲是上了大屏之後,這個功能是必須的,根據預先設定的輪詢間隔逐個加載視頻到預先設定的通道畫面數中,輪詢間隔、輪詢畫面數、輪詢採用的碼流類型(主碼流、子碼流)均可以在系統設置中進行統一設置,輪詢的視頻源採用攝像機表中的全部攝像機,當畫面數不夠的時候,其他留空顯示便可,輪詢到最後一個視頻,從新從第一個開始輪詢。
在輪詢的過程當中有兩種處理方式,一種是當即加載全部當前輪詢的視頻,一種是排隊加載,建議電腦配置不高的狀況下排隊加載,這樣能夠避免瞬間CPU暴增的狀況發生,若是電腦配置較差,同時瞬間加載16個視頻,此時CPU會暴增一次,內存都在此時分配,而若是採用排隊的方式,好比間隔0.3秒加載下一個,這樣就避免了這個問題,壓力也不會很大。
體驗地址:https://pan.baidu.com/s/1bbL2ZughZAgfIGrexyN-9g 提取碼:zkeh 。linux
監控系統是由攝像、傳輸、控制、顯示、記錄登記5大部分組成。攝像機經過同軸視頻電纜將視頻圖像傳輸到控制主機,控制主機再將視頻信號分配到各監視器及錄像設備,同時可將須要傳輸的語音信號同步錄入到錄像機內。 經過控制主機,操做人員可發出指令,對雲臺的上、下、左、右的動做進行控制及對鏡頭進行調焦變倍的操做,並可經過控制主機實如今多路攝像機及雲臺之間的切換。利用特殊的錄像處理模式,可對圖像進行錄入、回放、處理等操做,使錄像效果達到最佳。安全
視頻監控系統由實時控制系統、監視系統及管理信息系統組成。實時控制系統完成實時數據採集處理、存儲、反饋的功能;監視系統完成對各個監控點的全天候的監視,能在多操做控制點上切換多路圖像;管理信息系統完成各種所需信息的採集、接收、傳輸、加工、處理,是整個系統的控制核心。視頻監控系統是安全防範系統的組成部分,它是一種防範能力較強的綜合系統。視頻監控以其直觀、方便、信息內容豐富而普遍應用於許多場合。ide
void frmVideoPanel::poll() { if (actionPoll->text() == "啓動輪詢視頻") { actionPoll->setText("中止輪詢視頻"); } else { actionPoll->setText("啓動輪詢視頻"); } //優先把圖標切換,使得看起來反應很快 IconFont::Instance()->setIcon(ui->btnPoll, App::Polling ? 0xea14 : 0xea13, iconSize); //啓動和中止輪詢 if (!App::Polling) { //根據輪詢畫面數計算每次的url地址 pollUrls.clear(); for (int i = 0; i < DBData::IpcInfo_Count; i = i + App::PollType) { QStringList list; for (int j = i; j < i + App::PollType; j++) { if (j < DBData::IpcInfo_Count) { list << (App::PollRtsp == 0 ? DBData::IpcInfo_RtspAddrMain.at(j) : DBData::IpcInfo_RtspAddrSub.at(j)); } } pollUrls << list.join("|"); } //刪除全部視頻,切換到對應的輪詢通道畫面數 delete_video_all(); if (App::PollType == 1) { ui->btnVideo1->click(); } else if (App::PollType == 4) { ui->btnVideo4->click(); } else if (App::PollType == 9) { ui->btnVideo9->click(); } else if (App::PollType == 16) { ui->btnVideo16->click(); } QUIHelper::sleep(500); //立馬啓動輪詢,並執行一次 timerPoll->start(App::PollInterval * 1000); pollIndex = 0; polling(); } else { timerPoll->stop(); } App::Polling = !App::Polling; App::writeConfig(); DeviceHelper::addMsg(App::Polling ? "全部通道 啓動輪詢" : "全部通道 中止輪詢"); } void frmVideoPanel::polling() { //若是攝像頭列表數量爲空則中止定時器 if (DBData::IpcInfo_Count == 0) { timerPoll->stop(); return; } if (pollIndex == pollUrls.count()) { pollIndex = 0; } QStringList list = pollUrls.at(pollIndex).split("|"); pollIndex++; //方式1爲當即加載,方式2爲排隊加載,建議方式2 #if 0 for (int i = 0; i < list.count(); i++) { widgets.at(i)->close(); widgets.at(i)->setUrl(list.at(i)); widgets.at(i)->open(); } #else QStringList urls; for (int i = 0; i < App::VideoCount; i++) { if (i < list.count()) { urls << list.at(i); } else { urls << ""; } } #ifdef videovlc VideoVlc::Instance()->setUrls(urls); VideoVlc::Instance()->start(); #elif videoffmpeg VideoFFmpeg::Instance()->setUrls(urls); VideoFFmpeg::Instance()->start(); #elif easyplayer VideoEasyPlayer::Instance()->setUrls(urls); VideoEasyPlayer::Instance()->start(); #elif haikang VideoHaiKang::Instance()->setUrls(urls); VideoHaiKang::Instance()->start(); #endif #endif }