From 0ac8a18ccb5b60e251954bb8901b4be47b52622e Mon Sep 17 00:00:00 2001
From: chenshijun <csj_sky@126.com>
Date: 星期一, 18 二月 2019 09:54:34 +0800
Subject: [PATCH] 启动多个解码进程

---
 QiaoJiaSystem/VideoToImageMulth/RtspAnalysManager.cpp |   70 ++++++++++++++++++++++++++++++----
 1 files changed, 61 insertions(+), 9 deletions(-)

diff --git a/QiaoJiaSystem/VideoToImageMulth/RtspAnalysManager.cpp b/QiaoJiaSystem/VideoToImageMulth/RtspAnalysManager.cpp
index 5e713a3..7d6a0af 100644
--- a/QiaoJiaSystem/VideoToImageMulth/RtspAnalysManager.cpp
+++ b/QiaoJiaSystem/VideoToImageMulth/RtspAnalysManager.cpp
@@ -37,6 +37,7 @@
     return rtsp_url;
 }
 
+//鍒濆鍖栧嚱鏁�
 void RtspAnalysManager::init() {
 
     auto lst = m_lDBTool->searchCamDevTableAll();
@@ -47,16 +48,45 @@
     appPref.setIntData("n_cut_min_duration", lst_dev.n_cut_min_duration);
     if (lst.size() > 0) {
 
-        for (auto item : lst)
+        int startCamNO = appPref.getIntData("CamStart") * appPref.getIntData("CamStep");
+        int CamCount = appPref.getIntData("CamStep");
+        auto itor = lst.begin();
+
+        if(startCamNO >= lst.size())
         {
-            std::string t_camIdex = item.str_cam_dev_id.toStdString();
-            std::string rtsp_url = rtspAddrBuild(item.str_ip.toStdString(), 554, item.str_username.toStdString(),
-                                                 item.str_password.toStdString(), item.str_brand.toStdString());
-            INFO("cam add is " << item.str_addr.toStdString());
+            ERR("startCamNO > lst.size()");
+            return;
+        }
+
+        for(int i=0; i < startCamNO; i++){
+            itor++;
+        }
+
+        for (int i = 0; i < CamCount; i++) {
+            if (itor == lst.end())
+            {
+                ERR("itor == lst.end()");
+                return;
+            }
+            std::string t_camIdex = itor->str_cam_dev_id.toStdString();
+            std::string rtsp_url = rtspAddrBuild(itor->str_ip.toStdString(), 554, itor->str_username.toStdString(),
+                                                 itor->str_password.toStdString(), itor->str_brand.toStdString());
+            INFO("cam add is " << itor->str_addr.toStdString());
 
             addCamera(t_camIdex, rtsp_url);
-
+            itor++;
         }
+
+//        for (auto item : lst)
+//        {
+//            std::string t_camIdex = item.str_cam_dev_id.toStdString();
+//            std::string rtsp_url = rtspAddrBuild(item.str_ip.toStdString(), 554, item.str_username.toStdString(),
+//                                                 item.str_password.toStdString(), item.str_brand.toStdString());
+//            INFO("cam add is " << item.str_addr.toStdString());
+//
+//            addCamera(t_camIdex, rtsp_url);
+//
+//        }
     } else {
         ERR("searchCamDevTableAll size is 0");
     }
@@ -70,6 +100,14 @@
     m_controllers.clear();
 }
 
+/**
+ * 鏍规嵁鎽勫儚鏈篒D鍜孯TSP璺緞,澧炲姞鎽勫儚鏈�
+ * 瀵逛簬姣忎釜鎽勫儚鏈烘湁涓�涓� RtspImageRedisElement 瀵硅薄鐢ㄤ簬淇濆瓨鍥剧墖鍒癛edis
+ * 鏈変竴涓� RtspCaptureElement 鐢ㄦ埛褰曞彇鍜屼繚瀛樿棰�
+ * @param index 鎽勫儚鏈篿d
+ * @param rtsp 涓婇潰鐨勬憚鍍忔満瀵瑰簲鐨勮棰戣矾寰�
+ * @return -1 娣诲姞澶辫触,0 娣诲姞鎴愬姛
+ */
 int RtspAnalysManager::addCamera(const std::string &index, const std::string& rtsp) {
     auto lst = m_lDBTool->searchCamDevTableAll();
     Record_Config lst_dev = m_lDBTool->searchConfigTableWithinServerInfo();
@@ -91,11 +129,16 @@
 
     } else {
         removeCamera(index);
-        DBG("removeCamera " << index)
-        return addCamera(rtsp, index);
+        DBG("removeCamera " << index);
+        return addCamera(index, rtsp);
     }
 }
 
+/**
+ * 鏍规嵁CamID绉婚櫎鎽勫儚鏈�,鍚屾椂鍋滄瑙嗛鐨勬姄鍙栧拰淇濆瓨鍥剧墖鍒癛edis
+ * @param index 鎽勫儚鏈篒D
+ * @return 鎬绘槸0
+ */
 int RtspAnalysManager::removeCamera(const std::string &index) {
     if (m_controllers.find(index) == m_controllers.end())return -1;
     auto controller = m_controllers[index];
@@ -113,6 +156,10 @@
     return 0;
 }
 
+/**
+ * 绉婚櫎鎵�鏈夌殑鎽勫儚鏈�
+ * @return
+ */
 int RtspAnalysManager::removeAll() {
     for (auto controller: m_controllers) {
         controller.second->stop();
@@ -138,13 +185,18 @@
     return 0;
 }
 
+//鑾峰彇鏈�澶х殑鎽勫儚鏈烘暟閲�
 int RtspAnalysManager::getMaxCamCount() {
     return m_maxCount;
 }
 
+//鑾峰彇褰撳墠鐨勬憚鍍忔満鏁伴噺
 int RtspAnalysManager::getCurrentCamCount() {
     return m_currentCount;
 }
+
+
+//褰曞彇瑙嗛鐨凴PC鐨勬帴鍙e嚱鏁�
 ::std::string RtspAnalysManager::recordVideo(const ::std::string& name, const ::Ice::Current&)
 {
     INFO("Record Video For: "<<name);
@@ -165,7 +217,7 @@
     return name;
 }
 
-
+//淇濆瓨瑙嗛鍒癛tspImageRedis鐨勯槦鍒�,鐢盧tspCaptureElement璋冪敤
 bool RtspAnalysManager::SaveImageToRedis(const std::string& camId,const std::string& imageName,const cv::Mat& img)
 {
     auto item = m_imgRedisControllers.find(camId);

--
Gitblit v1.8.0