From 641eab08f214327f107ee6e96f9209f24baedabb Mon Sep 17 00:00:00 2001
From: zhangjixing <775834166@qq.com>
Date: 星期六, 05 一月 2019 19:23:20 +0800
Subject: [PATCH] 编码使用redis,多路存在问题,先传一版
---
QiaoJiaSystem/StructureApp/AppPipeController.cpp | 152 +++++++++-----------------------------------------
1 files changed, 29 insertions(+), 123 deletions(-)
diff --git a/QiaoJiaSystem/StructureApp/AppPipeController.cpp b/QiaoJiaSystem/StructureApp/AppPipeController.cpp
index 2a0062d..2d89d86 100644
--- a/QiaoJiaSystem/StructureApp/AppPipeController.cpp
+++ b/QiaoJiaSystem/StructureApp/AppPipeController.cpp
@@ -36,17 +36,16 @@
faceRpcElement(camId + "faceRpc"),
m_json(json),
faceExtractElement(camId + "faceExtract"),
- // peTriggerElement(json["perimeter.tolerance"].asInt(), json["perimeter.delay"].asInt()),
+ // peTriggerElement(json["perimeter.tolerance"].asInt(), json["perimeter.delay"].asInt()),
// leftTriggerElement(json["keepRight.tolerance"].asInt(), json["keepRight.delay"].asInt()),
// rightTriggerElement(json["keepRight.tolerance"].asInt(), json["keepRight.delay"].asInt()),
- // crowdTriggerElement(json["crowd.tolerance"].asInt(), json["crowd.delay"].asInt()),
+ // crowdTriggerElement(json["crowd.tolerance"].asInt(), json["crowd.delay"].asInt()),
triggerElement(25, 4),
recordVideoElement(camId, json["rtsp"].asString()),
newRecordVideoElement(camId),
perimeterElement(1),
crowdElement(json["crowd.num"].asInt()),
- bRecordVideoEnable(RecordVideoEnable)
-{
+ bRecordVideoEnable(RecordVideoEnable) {
init();
initPerimeter();
initCrowd();
@@ -54,10 +53,7 @@
}
AppPipeController::~AppPipeController() {
- if(recordStatus==RECORD_DOING)
- {
- newRecordVideoElement.endRecord();
- }
+
}
//************************************
@@ -155,23 +151,32 @@
}
- //#todo
- // int max=appPref.getIntData("n_cut_max_duration");
- recordInit(20,100);
+ //#todo
+ // int max=appPref.getIntData("n_cut_max_duration");
+ // recordInit(40,100);
videoCaptureElement.registerConnector([&] {
-
+ cv::Mat imageTemp = videoCaptureElement.getImage();
std::string strNewTime;
+ strNewTime = AppUtil::getTimeUSecString();
+
+ cv::putText(imageTemp, strNewTime, cv::Point(408, 540), cv::HersheyFonts::FONT_HERSHEY_PLAIN, 5,
+ cv::Scalar(255, 255, 0), 2);
if (m_camId.size() > 0) {
- strNewTime = AppUtil::getTimeUSecString();
- if(bRecordVideoEnable)
- {
- newRecordVideoElement.pushImgBuf(strNewTime,videoCaptureElement.getImage());
- setSdkTrigger();
- doRecord();
+ if (bRecordVideoEnable) {
+ DBG("strNewTime="<<strNewTime<<" camId="<<m_camId);
+ newRecordVideoElement.pushImgBuf(strNewTime, imageTemp);
+ newRecordVideoElement.setSdkTrigger(faceRpcElement.getTriggerState() ||//TODO
+ yoloRpcElement.getTrigger() ||
+ leftJudgment.getTriggerState() ||
+ rightJudgment.getTriggerState() ||
+ perimeterElement.getTriggerState() ||
+ crowdElement.getTriggerState());
+ // newRecordVideoElement.submit();
+
}
} else {
@@ -193,7 +198,7 @@
//#todo
faceRpcElement.setProperty("time", strNewTime);
// faceRpcElement.setProperty("time", uuid);
- faceRpcElement.setImage(videoCaptureElement.getImage());
+ faceRpcElement.setImage(imageTemp);
faceRpcElement.submit();
}
@@ -201,12 +206,12 @@
// yoloRpcElement.setProperty("uuid", uuid);
//#todo
yoloRpcElement.setProperty("time", strNewTime);
- yoloRpcElement.setImage(videoCaptureElement.getImage());
+ yoloRpcElement.setImage(imageTemp);
yoloRpcElement.submit();
}
if (!imageDrawElement.isBusy()) {
- imageDrawElement.setImage(videoCaptureElement.getImage());
+ imageDrawElement.setImage(imageTemp);
imageDrawElement.submit();
}
@@ -253,7 +258,7 @@
registerElement(faceExtractElement);
}
registerElement(imageDrawElement);
-
+ registerElement(newRecordVideoElement);
videoCaptureElement.setOutPutInterval(3);
faceExtractElement.setProperty("index", to_string(m_index));
//#todo setProperty
@@ -319,7 +324,7 @@
//area="[{\"x\":100,\"y\":6},{\"x\":100,\"y\":1200},{\"x\":1800,\"y\":1200},{\"x\":1800,\"y\":6}]";
perimeterElement.setMask(area);
perimeterElement.setFdfs(fdfsClient);
- perimeterElement.setProperty("sdkType","perimeter");
+ perimeterElement.setProperty("sdkType", "perimeter");
yoloRpcElement.registerConnector([&] {
if (!perimeterElement.isBusy()) {
@@ -356,7 +361,7 @@
//area="[{\"x\":100,\"y\":6},{\"x\":100,\"y\":1200},{\"x\":1800,\"y\":1200},{\"x\":1800,\"y\":6}]";
crowdElement.setMask(area);
crowdElement.setFdfs(fdfsClient);
- crowdElement.setProperty("sdkType","crowd");
+ crowdElement.setProperty("sdkType", "crowd");
yoloRpcElement.registerConnector([&] {
if (!crowdElement.isBusy()) {
crowdElement.setObjsResults(yoloRpcElement.getObjects());
@@ -405,104 +410,5 @@
registerElement(leftJudgment);
registerElement(rightJudgment);
-}
-
-
-//================
-void AppPipeController::recordInit(int videoMin, int videoMax) {
- sdkTrigger = false;
- fileMin = videoMin;
- fileMax = videoMax;
- triggerDelay = fileMin/2;
-
- recordStatus = RECORD_STOP;
- videoLength = 0;
- recordDelay = 0;
-}
-
-void AppPipeController::setSdkTrigger() {
- if( faceRpcElement.getTriggerState() ||//TODO
- yoloRpcElement.getTrigger() ||
- leftJudgment.getTriggerState()||
- rightJudgment.getTriggerState() ||
- perimeterElement.getTriggerState() ||
- crowdElement.getTriggerState()
- ){
- triggerDelay = 0;
- sdkTrigger = true;
- } else{
- if(triggerDelay++ >= fileMin/2) {
- sdkTrigger = false;
- }
- else{
- sdkTrigger = true;
- }
- }
-}
-
-void AppPipeController::doRecord() {
- switch(recordStatus)
- {
- case RECORD_STOP:
-// DBG("recordDelay:" << recordDelay);
-// DBG("videoLength:" << videoLength);
-// DBG("sdkTrigger:" << sdkTrigger);
- videoLength = 0;
- recordDelay = 0;
- if(sdkTrigger){
- recordStatus = RECORD_DOING;
- newRecordVideoElement.startRecord();
- }
- else
- {
- ImgInfo info;
- newRecordVideoElement.getImg(info);
- }
- break;
-
- case RECORD_DOING:
- videoLength++;
- if(sdkTrigger){
- if(videoLength < fileMax){
- newRecordVideoElement.doRecord();
- }
- else{
- recordStatus = RECORD_STOP;
- newRecordVideoElement.endRecord();
- }
- }else{
- recordStatus = RECORD_ENDING;
- newRecordVideoElement.doRecord();
- }
- break;
-
- case RECORD_ENDING:
- DBG("recordDelay:" << recordDelay);
- DBG("videoLength:" << videoLength);
- DBG("sdkTrigger:" << sdkTrigger);
- recordDelay++;
- videoLength++;
- if(sdkTrigger){
- if( (recordDelay < fileMin/4) &&
- (videoLength < fileMax)){
- newRecordVideoElement.doRecord();
- }else{
- recordStatus = RECORD_STOP;
- newRecordVideoElement.endRecord();
- }
- }else{
- if( (recordDelay < fileMin/2) &&
- (videoLength < fileMax)){
- newRecordVideoElement.doRecord();
- }else{
- recordStatus = RECORD_STOP;
- newRecordVideoElement.endRecord();
- }
- }
- break;
-
- default:
- break;
- }
}
--
Gitblit v1.8.0