派生自 development/c++

pansen
2019-03-05 ed223aee5fe5f3b222488549597976f34c679c3d
QiaoJiaSystem/VideoToImageMulth/RtspAnalysManager.cpp
@@ -40,6 +40,8 @@
//初始化函数
void RtspAnalysManager::init() {
    INFO("MYH DEBUG HERE")
    //#todo GB28181
#ifndef GB28181
    auto lst = m_lDBTool->searchCamDevTableAll();
    Record_Config lst_dev = m_lDBTool->searchConfigTableWithinServerInfo();
@@ -93,7 +95,62 @@
    } else {
        ERR("searchCamDevTableAll size is 0");
    }
#else
    auto lst = m_lDBTool->searchCamDevTableByType(1);
    Record_Config lst_dev = m_lDBTool->searchConfigTableWithinServerInfo();
    //设置视频的最长和最短时间间隔
    appPref.setIntData("n_cut_max_duration", lst_dev.n_cut_max_duration);
    appPref.setIntData("n_cut_min_duration", lst_dev.n_cut_min_duration);
    if (lst.size() > 0) {
//        int startCamNO = appPref.getIntData("CamStart") * appPref.getIntData("CamStep");
//        int CamCount = appPref.getIntData("CamStep");
//        INFO("StartCamNO: " << startCamNO << " CamStep: " << CamCount);
//        auto itor = lst.begin();
//
//        if (startCamNO >= lst.size()) {
//            ERR("startCamNO > lst.size()");
//            return;
//        }
//        for (int i = 0; i < startCamNO; i++) {
//
//            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("JumpCam: " << t_camIdex << "  URL: " << rtsp_url);
//            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 = "GB28181";
//            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");
    }
#endif
}
RtspAnalysManager::~RtspAnalysManager() {
@@ -115,33 +172,35 @@
 */
int RtspAnalysManager::addCamera(const std::string &index, const std::string &rtsp) {
#ifndef GB28181
    auto lst = m_lDBTool->searchCamDevTableAll();
    Record_Config lst_dev = m_lDBTool->searchConfigTableWithinServerInfo();
    if (m_controllers.find(index) == m_controllers.end()) {
        INFO("MYH DEBUG HERE");
        if (m_currentCount >= m_maxCount) {
            ERR("addCamera faild, camera's num is full!")
            return -1;
    //    why search lst ?
    //    auto lst = m_lDBTool->searchCamDevTableAll();
        Record_Config lst_dev = m_lDBTool->searchConfigTableWithinServerInfo();
        if (m_controllers.find(index) == m_controllers.end()) {
            INFO("MYH DEBUG HERE");
            if (m_currentCount >= m_maxCount) {
                ERR("addCamera faild, camera's num is full!")
                return -1;
            }
            INFO("RTSP: " << rtsp << "  INDEX:" << index);
            m_imgRedisControllers[index] = new RtspImageRedisElement(index);
            m_imgRedisControllers[index]->start();
            m_controllers[index] = new RtspCaptureElement(rtsp, index, 25, 3000, 0, this);
            m_controllers[index]->SetVideoMinMaxSeconds(lst_dev.n_cut_min_duration, lst_dev.n_cut_max_duration);
            m_controllers[index]->start();
            m_currentCount++;
            return 0;
        } else {
            removeCamera(index);
            INFO("removeCamera " << index);
            //DBG("removeCamera " << index);
            return addCamera(index, rtsp);
        }
        INFO("RTSP: " << rtsp << "  INDEX:" << index);
        m_imgRedisControllers[index] = new RtspImageRedisElement(index);
        m_imgRedisControllers[index]->start();
        m_controllers[index] = new RtspCaptureElement(rtsp, index, 25, 3000, 0, this);
        m_controllers[index]->start();
        m_controllers[index]->SetVideoMinMaxSeconds(lst_dev.n_cut_min_duration, lst_dev.n_cut_max_duration);
        m_currentCount++;
        return 0;
    } else {
        removeCamera(index);
        INFO("removeCamera " << index);
        //DBG("removeCamera " << index);
        return addCamera(index, rtsp);
    }
#else
    //#todo
    auto lst = m_lDBTool->searchCamDevTableAll();
//    why search lst ?
//    auto lst = m_lDBTool->searchCamDevTableAll();
    Record_Config lst_dev = m_lDBTool->searchConfigTableWithinServerInfo();
    //#todo end
@@ -158,9 +217,9 @@
        //VideoCaptureElementWithRtp(std::string &chanPubID, int fps, int streamTransType, int gpuIdx = -1)
        m_controllers_videoCapElem[index] = new BASICGB28181::VideoCaptureElementWithRtp(const_cast<string &>(index),
                                                                                         25, 1, 0);
        m_controllers_videoCapElem[index]->start();
        m_controllers_videoCapElem[index]->SetVideoMinMaxSeconds(lst_dev.n_cut_min_duration,
                                                                 lst_dev.n_cut_max_duration);
        m_controllers_videoCapElem[index]->start();
        m_currentCount++;
        return 0;