派生自 development/c++

pansen
2019-03-07 979bc003bce710bf300bc2bd87a8278585678763
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
//
// Created by ps on 19-1-8.
//
 
#include <iostream>
#include <thread>
#include <Debug.h>
 
#include "GB28181Server.h"
#include "VideoCaptureElementWithRtp.h"
 
#include <opencv2/opencv.hpp>
#include <CvUtil.h>
 
using namespace std;
 
 
int main(int argc, char **argv) {
    std::cout << "test " << std::endl;
 
    bool running = true;
    bool serinit = false;
 
    MysqlDBServerCfg mysqlDBServerCfg;
    mysqlDBServerCfg.Host = "192.168.1.148";
    mysqlDBServerCfg.Port = 3306;
    mysqlDBServerCfg.UserName = "root";
    mysqlDBServerCfg.Passwd = "123456";
    mysqlDBServerCfg.DBName = "EGEyesForVSS";
    mysqlDBServerCfg.DBConnCount = 5;
 
    GBServerCfg gbServerCfg;
    gbServerCfg.SvrIp = "192.168.1.148"; // 国标服务的ip地址  (本机的ip地址)
    gbServerCfg.SvrPort = 7060; // 国标服务监听的端口
    gbServerCfg.SvrPubID = "44120000002000000001"; // 国标服务器的ID
    gbServerCfg.bMD5Auth = false; // 是否需要MD5加密
    gbServerCfg.UserName = "44120100002000000002"; // 国标服务的用户名    (下级设备注册的用户名)
    gbServerCfg.Passwd = "123456"; // 国标服务的密码    (下级设备注册的密码)
    gbServerCfg.SubScribeTime = 3600; // 订阅时间  如果为0 表示不订阅
 
    SpinLock spinLock;
 
    auto func = [&] {
        spinLock.lock();
        GB28181Server m_gbs;
        m_gbs.setMysqlConnParam(mysqlDBServerCfg);
        m_gbs.setGBServerParam(gbServerCfg);
        DBG("initServer start before");
        serinit = m_gbs.initServer();
        DBG("initServer start after");
 
        spinLock.unlock();
        while (running) {
            usleep(4000);
        }
 
    };
 
    std::thread thd(func);
 
    //      ---------------------测试------------------------
    spinLock.lock();
    DBG("test start");
    //#todo search from db
    char ChanPubID2[] = "11010202081314000001";
    std::string str_ChanPubID2(ChanPubID2);
    BASICGB28181::VideoCaptureElementWithRtp videoCapture2(str_ChanPubID2, 25, 1, 0);
    videoCapture2.registerConnector([&]() {
        {
            //testCode
            cv::Mat t_image = videoCapture2.getImage();
            if (t_image.empty()) {
                ERR("t_image is empty");
                return;
            }
            std::string strNewTime;
            strNewTime = AppUtil::getTimeUSecString();
            cv::putText(t_image, strNewTime, cv::Point(408, 540), cv::HersheyFonts::FONT_HERSHEY_PLAIN, 5,
                        cv::Scalar(255, 255, 0), 2);
            DBG("imshow image" << str_ChanPubID2 << strNewTime);
//            imshow("str_ChanPubID2", t_image);
//            cv::waitKey(10);
 
 
 
#if 1
            {
//            TestCode
//                ClockTimer cl("str_ChanPubID1");
                std::string strNewTime2 = AppUtil::getTimeUSecString();
//                cv::putText(t_image, strNewTime2, cv::Point(408, 540), cv::HersheyFonts::FONT_HERSHEY_PLAIN,
//                            5, cv::Scalar(255, 255, 0), 2);
                std::thread test([&](cv::Mat img, std::string strThing) {
                    try {
                        std::string strNewTime = "tmpDec/";
                        strNewTime.append(str_ChanPubID2 + "_").append(strThing).append(".jpg");
                        cv::imwrite(strNewTime, img);
                    } catch (std::exception ex) {
                        ERR(ex.what());
                    }
                }, t_image, strNewTime2);
                test.detach();
            }
#endif
 
 
        }
    });
 
    usleep(10);
    videoCapture2.start();
    sleep(60);
    videoCapture2.stop();
    DBG("test end");
 
    getchar();
 
    running = false;
 
    getchar();
    sleep(2);
    return 0;
}