派生自 development/c++

pansen
2019-03-15 e17416c4ce4ed0510631b1692cb8af8c66c2a5b3
QiaoJiaSystem/DataManagerServer/http_configserver.cpp
@@ -23,13 +23,12 @@
#include <dirent.h>
#include "basic/pipe_element/ffmpeg/basic_struct_for_video_image.h"
#ifdef  MYSQLRET
#include "vss/controller/VssDevTblController.h"
#include "vss/controller/VssChannelTblController.h"
#include "vss/controller/VssDomainUnitTblController.h"
#include "vss/controller/VssLocalSettingTblController.h"
#include "vss/controller/VssUpperSvrTblController.h"
#endif
#include "vss/controller/CamDevController.h"
using namespace std;
@@ -250,15 +249,17 @@
                                         std::placeholders::_1, std::placeholders::_2,
                                         std::placeholders::_3, std::placeholders::_4));
#ifdef  MYSQLRET
    BaseDao::initConnection();
    VssLocalSettingTblSqliteDao::instance()->setLDBTool(&db_c);
    BaseSqliteDao::setLDBTool(&db_c);
    VssDevTblController::instance()->registerHttpServices(_HttpSrvRetRecieve);
    VssChannelTblController::instance()->registerHttpServices(_HttpSrvRetRecieve);
    VssDomainUnitTblController::instance()->registerHttpServices(_HttpSrvRetRecieve);
    VssLocalSettingTblController::instance()->registerHttpServices(_HttpSrvRetRecieve);
    CamDevController::instance()->registerHttpServices(_HttpSrvRetRecieve);
    VssUpperSvrTblController::instance()->registerHttpServices(_HttpSrvRetRecieve);
#endif
    _HttpSrvRetRecieve.start();
    _HttpSrvRetRecieve.waitForShutDown();
}
@@ -1002,11 +1003,24 @@
        elem["str_latitude"] = iter->str_latitude.toStdString();
        elem["str_ip"] = iter->str_ip.toStdString();
        elem["n_port"] = iter->n_port;
        elem["type"] = iter->type;
        elem["str_username"] = iter->str_username.toStdString();
        elem["str_password"] = iter->str_password.toStdString();
        elem["str_brand"] = iter->str_brand.toStdString();
        elem["str_reserved"] = iter->str_reserved.toStdString();
        SdkRuleMap ruleMap = db_c.searchSdkRuleByCamId(iter->str_cam_dev_id);
        int count = ruleMap.size();
        elem["nSdkTypes"] = Json::arrayValue;
        if (count > 0) {
            for (auto rule:ruleMap) {
                if (rule.second.nIsRun == 1) {
                    elem["nSdkTypes"].append(rule.second.nSdkType);
                }
            }
        }
//        Record_Cam_Sdk rec_sdk = db_c.searchCamSdkTableByCamId(iter->str_cam_dev_id);
//        elem["str_sdks"] = rec_sdk.str_sdks.toStdString();
//        elem["str_det_thr"] = rec_sdk.str_det_thr.toStdString();
@@ -1051,7 +1065,7 @@
        if ((!ret) || (serialnumber[0] == 0)) {
            return "{\"ret_status\": \"内容有误,请检查!\"}";
        }
        rec.type = 0;
        rec.str_cam_dev_id = QString::fromLatin1((const char *) serialnumber);//摄像机id cam_mac
        rec.str_name = QString::fromStdString(value["str_name"].asString());
        rec.str_addr = QString::fromStdString(value["str_addr"].asString());
@@ -1062,6 +1076,7 @@
        rec.str_username = QString::fromStdString(value["str_username"].asString());
        rec.str_password = QString::fromStdString(value["str_password"].asString());
        rec.str_brand = QString::fromStdString(value["str_brand"].asString());
        rec.str_reserved = QString::fromStdString(value["str_reserved"].asString());
        type = value["n_type"].asInt();
//        rec_sdk_old = db_c.searchCamSdkTableByCamId(rec.str_cam_dev_id);
@@ -1270,26 +1285,35 @@
    Json::Reader reader;
    Json::Value value_reader;
    std::string out;
    if (!reader.parse(content, value_reader)) {
        return "{\"ret_status\": \"传输错误,请检查!\"}";
    }
    Json::Value value;
    if (value_reader.isMember("id")) {
        if (value_reader["id"].isNull()) return "{\"ret_status\": \"id内容有误,请检查!\"}";
        value["connect_status"] = "True";
        std::string rtmp_url = appConfig.getStringProperty("srsAddr");
        rtmp_url.append("cam").append(value_reader["id"].asCString());
        value["video_url"] = rtmp_url;
        out = value.toStyledString();
    //TODO
    //调用rtsp流rtsp://admin:a1234567@192.168.1.215:554/h264/ch1/main/av_stream
    } else {
        //TODO
        //调用rtsp流rtsp://admin:a1234567@192.168.1.215:554/h264/ch1/main/av_stream
//    std::string rtsp_url = "rtsp://" + username + ":" + passwd + "@" + ip + ":"  + std::to_string(port) + "/h264/ch1/main/av_stream";
    bool ret = cam_connect_video_start(value_reader["str_ip"].asString(), value_reader["n_port"].asInt(), \
        bool ret = cam_connect_video_start(value_reader["str_ip"].asString(), value_reader["n_port"].asInt(), \
                            value_reader["str_username"].asString(), value_reader["str_password"].asString(), \
                            value_reader["str_brand"].asString());
    if (!ret) {
        return "{\"ret_status\": \"内容有误,请检查!\"}";
    }
        if (!ret) {
            return "{\"ret_status\": \"内容有误,请检查!\"}";
        }
    std::string rtmp_url = m_rtmp[value_reader["str_ip"].asCString()].appPC->getRtmp();
    Json::Value value;
    value["connect_status"] = "True";
    value["video_url"] = rtmp_url;
    std::string out = value.toStyledString();
        std::string rtmp_url = m_rtmp[value_reader["str_ip"].asCString()].appPC->getRtmp();
        value["connect_status"] = "True";
        value["video_url"] = rtmp_url;
        out = value.toStyledString();
    }
    return out;
}
@@ -1445,12 +1469,12 @@
                fdfsClient.rwLock.unlock();
            }
            //# http client 127.0.0.1:9999/resetFdfs
            std::string http_cmd = "http://127.0.0.1:9999/resetFdfs";
            HttpRequestWithCrul httpRequestWithCrul;
            std::string response_bak = "";
            std::string postParams_bak = "";
            httpRequestWithCrul.curl_post_req("http://127.0.0.1:9999/resetFdfs", postParams_bak, response_bak);
//            //# http client 127.0.0.1:9999/resetFdfs
//            std::string http_cmd = "http://127.0.0.1:9999/resetFdfs";
//            HttpRequestWithCrul httpRequestWithCrul;
//            std::string response_bak = "";
//            std::string postParams_bak = "";
//            httpRequestWithCrul.curl_post_req("http://127.0.0.1:9999/resetFdfs", postParams_bak, response_bak);
        }
    } else {
        return "{\"ret_status\": \"传输错误,请检查!\"}";
@@ -1932,6 +1956,7 @@
                ret = erlangDbTool->createDatabase(Uuid, fieldValues);
            } else if (SyncType == 0) {
                TableName.insert(0, "lt_");
                fieldValues["tableName"] = TableName;
                //本地库
                ret = m_SqliteFaceEncap.createTable(TableName, fieldValues);
            }
@@ -2406,26 +2431,27 @@
        std::string BwType = value["BwType"].asString();
        std::string StartTime = value["StartTime"].asString();
        std::string EndTime = value["EndTime"].asString();
        //#更新底库管理表
        FieldValues fieldValues;
        fieldValues.insert(std::make_pair("uuid", Uuid));
        fieldValues.insert(std::make_pair("tableName", TableName));
//            fieldValues.insert(std::make_pair("tableDesc", "ceshi2"));
        fieldValues.insert(std::make_pair("tableType", TableType));
        fieldValues.insert(std::make_pair("bwType", BwType));
        fieldValues.insert(std::make_pair("startTime", StartTime));
        fieldValues.insert(std::make_pair("endTime", EndTime));
//            fieldValues.insert(std::make_pair("create_by", "who"));
        bool ret = false;
        if (SyncType == 1) {
            //同步库
            ret = erlangDbTool->updateDatabase(Uuid, TableType, TableName, SyncType, BwType, StartTime, EndTime);
            ret = erlangDbTool->updateDatabase("sys_o_tables", fieldValues);
        } else if (SyncType == 0) {
            //本地库
            //#更新底库管理表
            FieldValues fieldValues;
            fieldValues.insert(std::make_pair("uuid", Uuid));
            if (TableName.find("lt_") != 0) {
                TableName.insert(0, "lt_");
            }
            fieldValues.insert(std::make_pair("tableName", TableName));
//            fieldValues.insert(std::make_pair("tableDesc", "ceshi2"));
            fieldValues.insert(std::make_pair("tableType", TableType));
            fieldValues.insert(std::make_pair("bwType", BwType));
            fieldValues.insert(std::make_pair("startTime", StartTime));
            fieldValues.insert(std::make_pair("endTime", EndTime));
//            fieldValues.insert(std::make_pair("create_by", "who"));
            fieldValues["tableName"] = TableName;
            ret = m_SqliteFaceEncap.updateTable("sys_o_tables", fieldValues);
        }
@@ -3316,17 +3342,22 @@
    Json::Value value;
    if (reader.parse(content, value)) {
        std::string str_imgName = "";
        std::string ip = value["str_ip"].asString();
        if (value.isMember("id")) {
            if (value["id"].isNull()) return "{\"ret_status\": \"id内容有误,请检查!\"}";
            str_imgName.append("./").append(value["id"].asString()).append(".jpg");
        } else {
            std::string ip = value["str_ip"].asString();
//        int port= value["n_port"].asInt();
        int port = 554;
        std::string username = value["str_username"].asString();
        std::string pass = value["str_password"].asString();
        std::string brand = value["str_brand"].asString();
        std::string rtsp_url = rtspAddrBuild(ip, port, username, pass, brand);
        if (rtsp_url.empty()) {
            return "{\"ret_status\":\"内容有误,请检查!\"}";
        }
            int port = 554;
            std::string username = value["str_username"].asString();
            std::string pass = value["str_password"].asString();
            std::string brand = value["str_brand"].asString();
            std::string rtsp_url = rtspAddrBuild(ip, port, username, pass, brand);
            if (rtsp_url.empty()) {
                return "{\"ret_status\":\"内容有误,请检查!\"}";
            }
//        unsigned char serialnumber[SERIALNO_LEN] = {0};
//        int ret = getDevSerialNumber(ip.c_str(), port,username.c_str(),pass.c_str(),brand.c_str(),serialnumber);
@@ -3338,20 +3369,22 @@
//        std::string str_cam_dev_id = std::string((char *) serialnumber);//摄像机id cam_mac
        std::string str_imgName = appConfig.getStringProperty("cutPath");
        if (str_imgName.back() != '/') {
            str_imgName.push_back('/');
        }
        str_imgName += ip;
        str_imgName += "-";
        str_imgName += "snapshot.jpg";
        //admin:a1234567@192.168.1.201:554/h264/ch1/main/av_stream -r 1/25 -f image2 -s 1920*1080 /home/basic/work_src/a.jpg
        std::string cmd(
            "ffmpeg -i " + rtsp_url + " -vf select='eq(pict_type\\,I)',setpts='N/(25*TB)' -f image2 -s 1920*1080 -y " +
            str_imgName);
            str_imgName = appConfig.getStringProperty("cutPath");
            if (str_imgName.back() != '/') {
                str_imgName.push_back('/');
            }
            str_imgName += ip;
            str_imgName += "-";
            str_imgName += "snapshot.jpg";
            //admin:a1234567@192.168.1.201:554/h264/ch1/main/av_stream -r 1/25 -f image2 -s 1920*1080 /home/basic/work_src/a.jpg
            std::string cmd(
                "ffmpeg -i " + rtsp_url +
                " -vf select='eq(pict_type\\,I)',setpts='N/(25*TB)' -f image2 -s 1920*1080 -y " +
                str_imgName);
//        std::string cmd("ffmpeg -i " + rtsp_url + " -r 1/25  -f image2 -s 1920*1080 -y " + str_imgName);
        DBG(cmd);
        system(cmd.c_str());
            DBG(cmd);
            system(cmd.c_str());
        }
        cv::Mat img = cv::imread(str_imgName);