派生自 development/c++

chenshijun
2019-03-27 e15c4888f720b8781260b901ac82d058f8f7c3b5
移植nsq到项目中,将最短最长时长的参数修改成nsq配置
10个文件已修改
171 ■■■■■ 已修改文件
QiaoJiaSystem/DataManagerServer/CMakeLists.txt 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
QiaoJiaSystem/DataManagerServer/http_configserver.cpp 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
QiaoJiaSystem/DataManagerServer/http_configserver.h 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
QiaoJiaSystem/FaceDetectServer/CMakeLists.txt 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
QiaoJiaSystem/GB28181DecoderModel/FFmpegDecoderJPG.cpp 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
QiaoJiaSystem/VideoToImageMulth/CMakeLists.txt 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
QiaoJiaSystem/VideoToImageMulth/RtspAnalysManager.cpp 84 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
QiaoJiaSystem/VideoToImageMulth/RtspAnalysManager.h 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
QiaoJiaSystem/VideoToImageMulth/RtspImageRedis.cpp 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
QiaoJiaSystem/build/runAll.sh 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
QiaoJiaSystem/DataManagerServer/CMakeLists.txt
@@ -53,6 +53,11 @@
    ../../../BasicPlatForm/libs/mysql/include/mysql/
    ../../../BasicPlatForm/basic/util/app/
    #nsq
    ../../../BasicPlatForm/libs/EvnsqTool/include
    ../../../BasicPlatForm/libs/libevent/include
)
link_directories(
@@ -81,6 +86,10 @@
    ../../../BasicPlatForm/basic/db/sqlite/sqlite-v-3220000
    ../../../BasicPlatForm/libs/mysqlpp/lib
    ../../../BasicPlatForm/libs/mysql/lib
    #nsq
    ../../../BasicPlatForm/libs/EvnsqTool/lib
    ../../../BasicPlatForm/libs/libevent/lib
)
add_executable(DataWebServer
@@ -157,6 +166,11 @@
    pthread
    mysqlpp
    mysqlclient
    #mq
    event
    evnsq
    evpp_concurrentqueue
    )
#add_executable(Apptest
QiaoJiaSystem/DataManagerServer/http_configserver.cpp
@@ -33,7 +33,7 @@
using namespace std;
devHttpServer_c::devHttpServer_c()
    : _HttpSrvRetRecieve("0.0.0.0", 8083, 1), erlangDbTool(nullptr), m_SqliteFaceEncap("LocalDataDB") {
    : _HttpSrvRetRecieve("0.0.0.0", 8083, 1), erlangDbTool(nullptr), m_SqliteFaceEncap("LocalDataDB"){
    init();
}
@@ -73,6 +73,10 @@
void devHttpServer_c::init(void) {
    std::string strDevId = appConfig.getStringProperty("DEV_ID");
    //nsq
    nsqMsgProducer = new BasicMsg::Nsq::NsqMsgProducer("127.0.0.1", "4150");
    nsqMsgProducer->init();
//    DSVAD010120181119
    m_batch = strDevId.substr(5, 2);
@@ -1529,9 +1533,13 @@
    }
    if (ret) {
        killVideoAnalysFromHCApp();
        sleep(1);
        runAllApp();
        //todo
        {
            std::string topic = "cut_dura_edit";
            std::string msg = content;
            DBG("msg:" << msg);
            nsqMsgProducer->Publish(topic, (void *) (&msg));
        }
        return "{\"ret_status\": \"ok_ack\"}";
    } else {
        return "{\"ret_status\": \"内容有误,请检查!\"}";
QiaoJiaSystem/DataManagerServer/http_configserver.h
@@ -19,6 +19,7 @@
#include <atomic>
#include "../FaceSearchServer/CasiaFaceWrapper/CasiaFaceWrapperN.h"
#include "AppPipeController.h"
#include "NsqMsgTool.hpp"
typedef std::shared_ptr<HttpServer::Response> PResponse;
@@ -154,6 +155,10 @@
    FastFdsWithLock fdfsClient;
    //nsq
    BasicMsg::Nsq::NsqMsgProducer *nsqMsgProducer;
    bool getDevSerialNumber(const char *ip, const int port, const char *username, \
                            const char *passwd, const char *brand, unsigned char *serialNumber) const;
QiaoJiaSystem/FaceDetectServer/CMakeLists.txt
@@ -18,6 +18,10 @@
    THFaceImage
    THFeature
    THFaceProperty
    #mq
    event
    evnsq
    evpp_concurrentqueue
    )
include_directories(
    ./rpc
@@ -31,6 +35,10 @@
    /usr/include/x86_64-linux-gnu/qt5
    #glog
    ../../../BasicPlatForm/libs/glog/include
    #nsq
    ../../../BasicPlatForm/basic/mq/EvnsqTool/include
    ../../../BasicPlatForm/libs/libevent/include
)
link_directories(
@@ -43,6 +51,10 @@
    ../../../BasicPlatForm/libs/openssl/lib
    ../../../BasicPlatForm/libs/opencv/lib
    ../../../BasicPlatForm/libs/Casia_Face/FaceSdk/lib/gpu
    #nsq
    ../../../BasicPlatForm/basic/mq/EvnsqTool/lib
    ../../../BasicPlatForm/libs/libevent/lib
)
add_executable(${PROJECT_NAME}
QiaoJiaSystem/GB28181DecoderModel/FFmpegDecoderJPG.cpp
@@ -76,8 +76,7 @@
#ifdef TestCode
        DBG(" m_rtpQueue.push before ");
#endif
        m_rtpQueue.
        push(info);
        m_rtpQueue.push(info);
#ifdef TestCode
        DBG(" m_rtpQueue.push after ");
#endif
QiaoJiaSystem/VideoToImageMulth/CMakeLists.txt
@@ -39,6 +39,10 @@
    28181sdk
    mysqlclient
    StreamParse
    #mq
    event
    evnsq
    evpp_concurrentqueue
    )
include_directories(
@@ -77,6 +81,10 @@
    ../../../BasicPlatForm/libs/mysqlpp/include
    ../../../BasicPlatForm/libs/mysql/include/mysql/
    #nsq
    ../../../BasicPlatForm/libs/EvnsqTool/include
    ../../../BasicPlatForm/libs/libevent/include
)
link_directories(
@@ -94,6 +102,10 @@
    ../../../BasicPlatForm/libs/hiredis-master/lib
    ../../../BasicPlatForm/libs/mysqlpp/lib
    ../../../BasicPlatForm/libs/mysql/lib
    #nsq
    ../../../BasicPlatForm/libs/EvnsqTool/lib
    ../../../BasicPlatForm/libs/libevent/lib
)
add_executable(${PROJECT_NAME}
QiaoJiaSystem/VideoToImageMulth/RtspAnalysManager.cpp
@@ -9,12 +9,88 @@
using std::string;
RtspAnalysManager::RtspAnalysManager(LDBTool *_dbTool) : m_lDBTool(nullptr), m_maxCount(50), m_currentCount(0) {
    INFO("MYH DEBUG HERE");
    DBG("MYH DEBUG HERE");
    m_lDBTool = new LDBTool;
    init();
    //nsq   set callback func
    DBG("NsqMsgConsumer Init");
    nsqMsgConsumer = new BasicMsg::Nsq::NsqMsgConsumer("127.0.0.1", "4150", "cut_dura_edit", to_string(appPref.getIntData("RpcVTIMPort")));
    nsqMsgConsumer->setMessageCallback(std::bind(&OnMsgFunc, std::placeholders::_1, this));
    nsqMsgConsumer->init();
    DBG("NsqMsgConsumer Init END!!");
}
void RtspAnalysManager::OnMsgFunc(void *msgPtr, void *pThisPtr) {
    evnsq::Message *msg = (evnsq::Message *) msgPtr;
    DBG("Received a message, id=" << msg->id << " message=[" << msg->body.ToString() << "]");
    RtspAnalysManager *pthis = (RtspAnalysManager *) pThisPtr;
    Json::Reader reader;
    Json::Value value;
    if (reader.parse(msg->body.ToString(), value)) {
        int cut_max_duration = value["cut_max_duration"].asInt();
        int cut_min_duration = value["cut_min_duration"].asInt();
        DBG("cut_max_duration: " << cut_max_duration << "   cut_min_duration: " << cut_min_duration);
        appPref.setIntData("n_cut_max_duration", cut_max_duration);
        appPref.setIntData("n_cut_min_duration", cut_min_duration);
        DBG("cut_max_duration: " << cut_max_duration << "   cut_min_duration: " << cut_min_duration);
//        m_GB28181_Enable = appPref.getIntData("GB28181_Enable");
        //#todo GB28181
        if (pthis->m_GB28181_Enable) {
            DBG("searchCamDevTableByType before");
            auto lst = pthis->m_lDBTool->searchCamDevTableByType(1);
            DBG("searchCamDevTableByType size:" << lst.size());
            if (lst.size() > 0) {
                for (auto item : lst) {
                    std::string t_camIdex = item.str_cam_dev_id.toStdString();
                    DBG("-----camID:" << t_camIdex << "min:" << cut_min_duration << "max:" << cut_max_duration);
                    pthis->m_controllers_videoCapElem[t_camIdex]->SetVideoMinMaxSeconds(cut_min_duration, cut_max_duration);
                }
            } else {
                ERR("searchCamDevTableByType size is 0");
            }
        } else {
            auto lst = pthis->m_lDBTool->searchCamDevTableByType(0);
            if (lst.size() > 0) {
                int startCamNO = appPref.getIntData("CamStartNO");
                int CamCount = appPref.getIntData("CamEndNO") - appPref.getIntData("CamStartNO") + 1;
                INFO("StartCamNO: " << startCamNO << " CamCount: " << CamCount);
                auto itor = lst.begin();
                if (startCamNO >= lst.size()) {
                    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();
                    DBG("-----camID:" << t_camIdex << "min:" << cut_min_duration << "max:" << cut_max_duration);
                    pthis->m_controllers[t_camIdex]->SetVideoMinMaxSeconds(cut_min_duration, cut_max_duration);
                    itor++;
                }
            } else {
                ERR("searchCamDevTableByType size is 0");
            }
        }
    } else {
        ERR("Error Message!!");
    }
}
static std::string rtspAddrBuild(std::string ip, const int port, std::string username,
                                 std::string passwd, std::string brand) {
@@ -334,18 +410,18 @@
//保存视频到RtspImageRedis的队列,由RtspCaptureElement调用
bool RtspAnalysManager::SaveImageToRedis(const std::string &camId, const std::string &imageName, const cv::Mat &img) {
    INFO("MYH DEBUG HERE  " << camId);
//    INFO("MYH DEBUG HERE  " << camId);
//    m_imgRedisCRwLock.rdlock();
    auto item = m_imgRedisControllers.find(camId);
    if (item != m_imgRedisControllers.end()) {
        INFO("Save Succeed Cam: " << camId << " ImageKey: " << imageName);
//        INFO("Save Succeed Cam: " << camId << " ImageKey: " << imageName);
        item->second->SaveImage(imageName, img);
    } else {
        ERR("Save Failed Cam: " << camId << " ImageKey: " << imageName);
    }
//    m_imgRedisCRwLock.unlock();
    INFO("MYH DEBUG HERE");
//    INFO("MYH DEBUG HERE");
    return true;
}
QiaoJiaSystem/VideoToImageMulth/RtspAnalysManager.h
@@ -15,6 +15,8 @@
#include <QiaoJia/DB/LDBTool.h>
#include <basic/util/app/AppPreference.hpp>
#include "RtspAnalysServer.h"
#include "NsqMsgTool.hpp"
//#include <GB28181DecoderModel/VideoCaptureElementWithRtp.h>
//#include <VideoToImageMulth/rpc/RtspAnalysServer.h>
@@ -28,6 +30,13 @@
    RtspAnalysManager() : m_maxCount(50), m_currentCount(0) {
        m_lDBTool = new LDBTool;
        init();
        //nsq   set callback func
        DBG("NsqMsgConsumer Init");
        nsqMsgConsumer = new BasicMsg::Nsq::NsqMsgConsumer("127.0.0.1", "4150", "cut_dura_edit", to_string(appPref.getIntData("RpcVTIMPort")));
        nsqMsgConsumer->setMessageCallback(std::bind(&OnMsgFunc, std::placeholders::_1, this));
        nsqMsgConsumer->init();
        DBG("NsqMsgConsumer Init END!!");
    }
    RtspAnalysManager(LDBTool *_dbTool);
@@ -51,9 +60,13 @@
private:
    void init();
    static void OnMsgFunc(void *msgPtr, void *pThisPtr);
private:
    //nsq
    BasicMsg::Nsq::NsqMsgConsumer *nsqMsgConsumer;
    RWLock m_imgRedisCRwLock;
    LDBTool *m_lDBTool;
QiaoJiaSystem/VideoToImageMulth/RtspImageRedis.cpp
@@ -16,14 +16,14 @@
        auto imageCount = m_redisTool.getSize(m_camId);
        //保证Redis中的图片不要过多
        if (imageCount > M_CAM_PIC_MAX_COUNT) {
            ERR("Too Much Pics In Cam " << m_camId << " Redis ImageCount: " << imageCount );
//            ERR("Too Much Pics In Cam " << m_camId << " Redis ImageCount: " << imageCount );
            return;
        }
        auto item = m_imageQueue.front();
        m_redisTool.setKeyImage(item.m_imgName,item.m_image);
        m_redisTool.listLpush(m_camId, item.m_imgName);
        m_imageQueue.pop();
        INFO("SaveImage To Redis Succeed CamID:"<<m_camId<<" ImageName:"<<item.m_imgName);
//        INFO("SaveImage To Redis Succeed CamID:"<<m_camId<<" ImageName:"<<item.m_imgName);
    }
}
@@ -46,7 +46,7 @@
    //保证队列中的图片不要过多
    if(m_imageQueue.size() < M_CAM_PIC_MAX_COUNT)
    {
        INFO("SaveImage Succeed ImgName:"<<imageName);
//        INFO("SaveImage Succeed ImgName:"<<imageName);
        m_imageQueue.push(NameImagePair_s_t(imageName,img));
    }
    else{
QiaoJiaSystem/build/runAll.sh
@@ -7,7 +7,7 @@
MYLOGPATH="/home/basic/work/log/"
#todo
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-8.0/lib64:${MY3RDLIBSPATH}/hcTool/HCNetSDK64/lib:${MY3RDLIBSPATH}/hcTool/HCNetSDK64/lib/HCNetSDKCom:${MY3RDLIBSPATH}/ffmpeg/lib:${MY3RDLIBSPATH}/opencv/lib:${MY3RDLIBSPATH}/Casia_Face/FaceSdk/lib/gpu:${MY3RDLIBSPATH}/FastDFS/lib:${MY3RDLIBSPATH}/Ice-3.7.0/lib64:${MY3RDLIBSPATH}/DarkNet/lib:${MY3RDLIBSPATH}/libopenssl/lib:${MY3RDLIBSPATH}/uniview/lib:${MY3RDLIBSPATH}/libboost/lib/:${MY3RDLIBSPATH}/sqlite/lib/:${MY3RDLIBSPATH}/glog/lib/:${MY3RDLIBSPATH}/hiredis-master/lib:${MY3RDLIBSPATH}/mysql/lib:${MY3RDLIBSPATH}/mysqlpp/lib:${MY3RDLIBSPATH}/GB28181/libs
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-8.0/lib64:${MY3RDLIBSPATH}/hcTool/HCNetSDK64/lib:${MY3RDLIBSPATH}/hcTool/HCNetSDK64/lib/HCNetSDKCom:${MY3RDLIBSPATH}/ffmpeg/lib:${MY3RDLIBSPATH}/opencv/lib:${MY3RDLIBSPATH}/Casia_Face/FaceSdk/lib/gpu:${MY3RDLIBSPATH}/FastDFS/lib:${MY3RDLIBSPATH}/Ice-3.7.0/lib64:${MY3RDLIBSPATH}/DarkNet/lib:${MY3RDLIBSPATH}/libopenssl/lib:${MY3RDLIBSPATH}/uniview/lib:${MY3RDLIBSPATH}/libboost/lib/:${MY3RDLIBSPATH}/sqlite/lib/:${MY3RDLIBSPATH}/glog/lib/:${MY3RDLIBSPATH}/hiredis-master/lib:${MY3RDLIBSPATH}/mysql/lib:${MY3RDLIBSPATH}/mysqlpp/lib:${MY3RDLIBSPATH}/GB28181/libs:${MY3RDLIBSPATH}/EvnsqTool/lib:${MY3RDLIBSPATH}/libevent/lib
startFunc() {
    PROC=`ps aux | grep "$1" | grep -v grep | grep -v tail`
@@ -159,14 +159,14 @@
    rm -rfd ${MYLOGPATH}/VideoAnalysFromHC/*
    startVAHK VideoAnalysFromHC 0 1 0 1 10001 10011 10021 10031 10041
    startVAHK VideoAnalysFromHC 0 0 2 3 10002 10012 10022 10032 10042
    startVAHK VideoAnalysFromHC 1 1 0 4 10003 10013 10023 10033 10043
    startVAHK VideoAnalysFromHC 1 1 0 3 10003 10013 10023 10033 10043
#    startVAHK VideoAnalysFromHC 0 0 12 15 10004 10014 10024 10034 10044
else
    echo "VideoAnalysFromHC is exists"
fi
cd /home/basic/Apps/BasicPlatForm/libs/srs
cd ${MY3RDLIBSPATH}/srs
nohup ./runRtmpServer.sh &
cd /usr/local/redis/bin