From 6540a2a9d69432c4cc475e3b32eae11e9e0ace73 Mon Sep 17 00:00:00 2001
From: chenshijun <csj_sky@126.com>
Date: 星期四, 11 四月 2019 20:28:10 +0800
Subject: [PATCH] 1.srs的分辨率在config.json配置 2.单播推流控制,国标摄像机差一个关闭测试 3. 底库字段添加
---
QiaoJiaSystem/DataManagerServer/demo.cpp | 4
QiaoJiaSystem/VideoToImageMulth/RtspCaptureElement.h | 2
QiaoJiaSystem/GB28181DecoderModel/VideoCaptureElementWithRtp.h | 4
QiaoJiaSystem/GB28181DecoderModel/VideoCaptureElementWithRtp.cpp | 70 ++++++++++++++++++----
QiaoJiaSystem/LocalDBTool/SqliteToolkit.hpp | 7 ++
QiaoJiaSystem/VideoToImageMulth/RtspAnalysManager.cpp | 4
QiaoJiaSystem/VideoToImageMulth/RtspCaptureElement.cpp | 57 ++++++++++++------
7 files changed, 108 insertions(+), 40 deletions(-)
diff --git a/QiaoJiaSystem/DataManagerServer/demo.cpp b/QiaoJiaSystem/DataManagerServer/demo.cpp
index 6a83272..1a0073b 100644
--- a/QiaoJiaSystem/DataManagerServer/demo.cpp
+++ b/QiaoJiaSystem/DataManagerServer/demo.cpp
@@ -14,8 +14,8 @@
std::string publish_basepath = "rtmp://localhost:1934/live/cam" + std::to_string(554);
appPref.setIntData("gpu.index", 0);
appPref.setStringData("publish.basepath", publish_basepath);
- appPref.setIntData("pulish.width", 640);
- appPref.setIntData("pulish.height", 360);
+// appPref.setIntData("pulish.width", 640);
+// appPref.setIntData("pulish.height", 360);
AppPipeController a(0, json);
a.start();
diff --git a/QiaoJiaSystem/GB28181DecoderModel/VideoCaptureElementWithRtp.cpp b/QiaoJiaSystem/GB28181DecoderModel/VideoCaptureElementWithRtp.cpp
index 9b7b775..40b3a8c 100644
--- a/QiaoJiaSystem/GB28181DecoderModel/VideoCaptureElementWithRtp.cpp
+++ b/QiaoJiaSystem/GB28181DecoderModel/VideoCaptureElementWithRtp.cpp
@@ -53,6 +53,36 @@
#ifdef TestCode
DBG("waitSignal(\"DecoderImageOK\") after");
#endif
+ {
+ if (p_this->m_publishVideoRet) {
+ if (p_this->videoPublishElement == nullptr) {
+ string path = appConfig.getStringProperty("srsAddr") + "cam" + p_this->m_chanPubID + ".flv";
+ cv::Size size_(appConfig.getIntProperty("pulish.width"), appConfig.getIntProperty("pulish.height"));
+ int gupIdx = appPref.getIntData("gpu.index");
+ DBG("videoPublishpath: " << p_this->m_chanPubID << path << " h:" << size_.height);
+ p_this->videoPublishElement = new ffmpeg::VideoPublishElement(path, size_, "flv", 25, gupIdx);
+ p_this->videoPublishElement->start();
+ } else {
+ DBG("videoPublishElement->setImage() : " << p_this->m_chanPubID);
+ if (!p_this->m_image.empty()) {
+ p_this->videoPublishElement->setImage(p_this->m_image);
+ } else {
+ ERR("m_image.empty()");
+ }
+ }
+ } else {
+ if (p_this->videoPublishElement != nullptr) {
+ DBG("videoPublishElement->stop() :" << p_this->m_chanPubID);
+ p_this->videoPublishElement->stop();
+ p_this->videoPublishElement->wait();
+ delete p_this->videoPublishElement;
+ p_this->videoPublishElement = nullptr;
+ }else{
+ DBG("videoPublishElement null :" << p_this->m_chanPubID);
+ }
+ }
+ }
+
/****褰曞儚妯″潡浠g爜*****/
p_this->m_picCount++;
//鍑犲紶閫変竴寮犳斁鍏edis
@@ -204,20 +234,32 @@
}
void BASICGB28181::VideoCaptureElementWithRtp::threadFunc() {
-
- if (m_publishVideoRet) {
- if (videoPublishElement == nullptr) {
- string path = appConfig.getStringProperty("srsAddr") + "cam" + m_chanPubID + ".flv";
- cv::Size size_(appConfig.getIntProperty("pulish.width"), appConfig.getIntProperty("pulish.height"));
- int gupIdx = appPref.getIntData("gpu.index");
- videoPublishElement = new ffmpeg::VideoPublishElement(path, size_, "flv", 25, gupIdx);
- } else {
- videoPublishElement->stop();
- videoPublishElement->wait();
- delete videoPublishElement;
- videoPublishElement = nullptr;
- }
- }
+// {
+// if (m_publishVideoRet) {
+// if (videoPublishElement == nullptr) {
+// string path = appConfig.getStringProperty("srsAddr") + "cam" + m_chanPubID + ".flv";
+// cv::Size size_(appConfig.getIntProperty("pulish.width"), appConfig.getIntProperty("pulish.height"));
+// int gupIdx = appPref.getIntData("gpu.index");
+// DBG("videoPublishpath:" << path << " h:" << size_.height << " w:" << size_.width);
+// videoPublishElement = new ffmpeg::VideoPublishElement(path, size_, "flv", 25, gupIdx);
+// videoPublishElement->start();
+// } else {
+// if (!m_image.empty()) {
+// videoPublishElement->setImage(m_image);
+// } else {
+// ERR("m_image.empty()");
+// }
+// }
+// } else {
+// if (videoPublishElement != nullptr) {
+// DBG("videoPublishElement->stop()");
+// videoPublishElement->stop();
+// videoPublishElement->wait();
+// delete videoPublishElement;
+// videoPublishElement = nullptr;
+// }
+// }
+// }
fireConnectors();
}
diff --git a/QiaoJiaSystem/GB28181DecoderModel/VideoCaptureElementWithRtp.h b/QiaoJiaSystem/GB28181DecoderModel/VideoCaptureElementWithRtp.h
index 0ca39eb..8e0a92c 100644
--- a/QiaoJiaSystem/GB28181DecoderModel/VideoCaptureElementWithRtp.h
+++ b/QiaoJiaSystem/GB28181DecoderModel/VideoCaptureElementWithRtp.h
@@ -73,12 +73,12 @@
std::atomic<bool> m_running;
std::atomic<bool> m_waitSignal;
- std::atomic<bool> m_waitSignalrunning;
+ std::atomic<bool> m_waitSignalrunning{false};
//鐢ㄦ潵淇濆瓨褰曞儚瑙嗛鐨勮矾寰�
std::string m_cutPath;
std::atomic<bool> m_publishVideoRet{false};
- ffmpeg::VideoPublishElement * videoPublishElement;
+ ffmpeg::VideoPublishElement * videoPublishElement{nullptr};
private:
/***
* 鍚姩瀹炴椂娴佹帴鏀舵暟鎹嚎绋�
diff --git a/QiaoJiaSystem/LocalDBTool/SqliteToolkit.hpp b/QiaoJiaSystem/LocalDBTool/SqliteToolkit.hpp
index 9c893a7..a3b7e75 100644
--- a/QiaoJiaSystem/LocalDBTool/SqliteToolkit.hpp
+++ b/QiaoJiaSystem/LocalDBTool/SqliteToolkit.hpp
@@ -241,6 +241,11 @@
// %% ALTER TABLE sys_o_tables ADD COLUMN uploadFlag varchar(255) DEFAULT 0;
// %% ALTER TABLE sys_o_tables ADD COLUMN cmpThreshold varchar(255) DEFAULT 60;
// %% ALTER TABLE sys_o_tables ADD COLUMN enabled varchar(255) DEFAULT 1;
+
+// %% ALTER TABLE "0cd82a8b-5285-5737-ab19-8c07247c797e" ADD COLUMN uploadFlag varchar(255) DEFAULT 0;
+// %% ALTER TABLE "0cd82a8b-5285-5737-ab19-8c07247c797e" ADD COLUMN cmpThreshold varchar(255) DEFAULT 60;
+// %% ALTER TABLE "0cd82a8b-5285-5737-ab19-8c07247c797e" ADD COLUMN enabled varchar(255) DEFAULT 1;
+
std::string sql = "CREATE TABLE \"main\".\"sys_o_tables\" (";
sql.append(" uuid varchar(255) PRIMARY KEY, ");
// sql.append(" ClusterName varchar(255) DEFAULT NULL,");//鏈湴搴撲笉闇�瑕�
@@ -286,6 +291,8 @@
sql.append("create_by varchar(255) DEFAULT NULL,");
sql.append("del_flag INTEGER DEFAULT 0,");
sql.append("monitorLevel varchar(255) DEFAULT 0,");
+ sql.append("uploadFlag varchar(255) DEFAULT 0,");
+ sql.append("cmpThreshold varchar(255) DEFAULT 60,");
sql.append("enabled varchar(255) DEFAULT 1");
sql.append(");");
// 浜鸿劯鐗瑰緛琛�
diff --git a/QiaoJiaSystem/VideoToImageMulth/RtspAnalysManager.cpp b/QiaoJiaSystem/VideoToImageMulth/RtspAnalysManager.cpp
index 36b2df4..b281268 100644
--- a/QiaoJiaSystem/VideoToImageMulth/RtspAnalysManager.cpp
+++ b/QiaoJiaSystem/VideoToImageMulth/RtspAnalysManager.cpp
@@ -115,12 +115,12 @@
if (pthis->m_GB28181_Enable) {
if (pthis->m_controllers_videoCapElem.find(cam_idx) !=
pthis->m_controllers_videoCapElem.end()) {
- INFO("cam add is " << cfg_val["str_addr"].asString());
+ INFO("cam add is " << cam_idx);
pthis->m_controllers_videoCapElem[cam_idx]->startPublishVideo();
}
} else {
if (pthis->m_controllers.find(cam_idx) != pthis->m_controllers.end()) {
- INFO("cam add is " << cfg_val["str_addr"].asString());
+ INFO("cam add is " << cam_idx);
pthis->m_controllers[cam_idx]->startPublishVideo();
}
}
diff --git a/QiaoJiaSystem/VideoToImageMulth/RtspCaptureElement.cpp b/QiaoJiaSystem/VideoToImageMulth/RtspCaptureElement.cpp
index 374529b..33a73fc 100644
--- a/QiaoJiaSystem/VideoToImageMulth/RtspCaptureElement.cpp
+++ b/QiaoJiaSystem/VideoToImageMulth/RtspCaptureElement.cpp
@@ -39,39 +39,58 @@
}
}
- m_picCount++;
- //鍑犲紶閫変竴寮犳斁鍏edis
- if (m_picCount % m_nPicsPickOne != 0) {
- return;
- } else {
- m_picCount.store(0);
- }
+ u_char *data;
+ int width = 0, height = 0, step = 0, cn = 0;
+ cv::Mat copyMat;
- {
- u_char *data;
- int width = 0, height = 0, step = 0, cn = 0;
- m_capture->retrieveFrame(0, &data, &step, &width, &height, &cn);
-
- cv::Mat img(height, width, CV_8UC3, data, step);
- cv::Mat copyMat;
- img.copyTo(copyMat);
- std::string imageName = m_capture->GetImageName();
- m_pManager->SaveImageToRedis(m_camId, imageName, copyMat);
- }
- //#todo publish Video
+ //#publish Video
if (m_publishVideoRet) {
if (videoPublishElement == nullptr) {
string path = appConfig.getStringProperty("srsAddr") + "cam" + m_camId + ".flv";
cv::Size size_(appConfig.getIntProperty("pulish.width"), appConfig.getIntProperty("pulish.height"));
int gupIdx = appPref.getIntData("gpu.index");
+ DBG("size_:" << size_.width << "X" << size_.height);
videoPublishElement = new ffmpeg::VideoPublishElement(path, size_, "flv", 25, gupIdx);
+ videoPublishElement->start();
} else {
+// DBG("videoPublishElement->setImage()");
+ m_capture->retrieveFrame(0, &data, &step, &width, &height, &cn);
+ cv::Mat img(height, width, CV_8UC3, data, step);
+ img.copyTo(copyMat);
+
+ if (!copyMat.empty()) {
+ videoPublishElement->setImage(copyMat);
+ } else {
+ DBG("copyMat.empty()");
+ }
+ }
+ } else {
+ if (videoPublishElement != nullptr) {
+ DBG("videoPublishElement->stop()");
videoPublishElement->stop();
videoPublishElement->wait();
delete videoPublishElement;
videoPublishElement = nullptr;
}
}
+
+ //鍑犲紶閫変竴寮犳斁鍏edis
+ m_picCount++;
+ if (m_picCount % m_nPicsPickOne != 0) {
+ return;
+ } else {
+ m_picCount.store(0);
+ }
+
+ if (copyMat.empty()) {
+// ERR("copyMat.empty()");
+ m_capture->retrieveFrame(0, &data, &step, &width, &height, &cn);
+ cv::Mat img(height, width, CV_8UC3, data, step);
+ img.copyTo(copyMat);
+ }
+ std::string imageName = m_capture->GetImageName();
+ m_pManager->SaveImageToRedis(m_camId, imageName, copyMat);
+
fireConnectors();
}
diff --git a/QiaoJiaSystem/VideoToImageMulth/RtspCaptureElement.h b/QiaoJiaSystem/VideoToImageMulth/RtspCaptureElement.h
index 36fa3ea..af806a5 100644
--- a/QiaoJiaSystem/VideoToImageMulth/RtspCaptureElement.h
+++ b/QiaoJiaSystem/VideoToImageMulth/RtspCaptureElement.h
@@ -56,7 +56,7 @@
std::atomic<bool> m_publishVideoRet{false};
- ffmpeg::VideoPublishElement *videoPublishElement;
+ ffmpeg::VideoPublishElement *videoPublishElement{nullptr};
// Redis鐨勫伐鍏风被
// HiredisTool m_redisTool;
--
Gitblit v1.8.0