派生自 development/c++

xuxiuxi
2019-03-08 9a0afe1ccce6fd3a6882b4c19b72cee579a54dd1
QiaoJiaSystem/VideoToImageMulth/RtspCaptureElement.cpp
@@ -8,18 +8,19 @@
#include <QString>
#include <QDateTime>
#include "RtspAnalysManager.h"
RtspCaptureElement::RtspCaptureElement(const std::string &path, const std::string& camId,int fps, int reopenTime, int gpuIndex,RtspAnalysManager* manager):
    TimerElement(10),m_path(path),m_gpuIndex(gpuIndex),
    m_reopenTime(reopenTime),m_camId(camId),m_pManager(manager){
    m_cutPath= appPref.getStringData("user.loop.absolute.path");
RtspCaptureElement::RtspCaptureElement(const std::string &path, const std::string &camId, int fps, int reopenTime,
                                       int gpuIndex, RtspAnalysManager *manager) :
    TimerElement(10), m_path(path), m_gpuIndex(gpuIndex),
    m_reopenTime(reopenTime), m_camId(camId), m_pManager(manager) {
    m_cutPath = appPref.getStringData("user.loop.absolute.path");
    assert(!m_cutPath.empty());
    m_capture = new CvCapture_FFMPEG(m_camId);
}
//定时抓取图片,通过将图片放入RtspImageRedisElement的队列中,来减少视频的丢帧
void RtspCaptureElement::timerFunc()
{
void RtspCaptureElement::timerFunc() {
    bool ret = m_capture->grabFrame();
    if (!ret) {
@@ -53,13 +54,12 @@
        cv::Mat copyMat;
        img.copyTo(copyMat);
        std::string imageName = m_capture->GetImageName();
        m_pManager->SaveImageToRedis(m_camId,imageName,copyMat);
        m_pManager->SaveImageToRedis(m_camId, imageName, copyMat);
    }
    fireConnectors();
}
std::string RtspCaptureElement::MakeDir(const std::string &timeStamp)
{
std::string RtspCaptureElement::MakeDir(const std::string &timeStamp) {
    std::string t_FilePath = m_cutPath;
    if (t_FilePath.back() != '/') {
@@ -68,11 +68,11 @@
    char buf[24];
    QDateTime dt = QDateTime::fromString(QString::fromStdString(timeStamp), "yyyy-MM-dd hh:mm:ss:zzz");
    std::string t_strTime=dt.toString("yyyyMMddhh").toStdString();
    std::string t_strTime = dt.toString("yyyyMMddhh").toStdString();
    // DBG("t_strTime="<<t_strTime);
    t_FilePath.append(m_camId + "/" + t_strTime.substr(0, 6)+ "/" +t_strTime.substr(6, 2) + "/");
    t_FilePath.append(m_camId + "/" + t_strTime.substr(0, 6) + "/" + t_strTime.substr(6, 2) + "/");
    //YYYYMMDDHH
    t_FilePath.append(t_strTime.substr(0,10)+ "/");
    t_FilePath.append(t_strTime.substr(0, 10) + "/");
    std::string t_cmd = "mkdir -p '";
    t_cmd.append(t_FilePath + "'");
    //#get path mkdir path
@@ -80,36 +80,36 @@
    return t_FilePath;
}
void RtspCaptureElement::SaveVideo(const std::string &strImageName)
{
    std::string strTimeStamp= AppUtil::getTimeUSecString();
    std::string strPath=MakeDir(strTimeStamp);
    m_capture->SaveVideoByImageName(strPath,strImageName);
void RtspCaptureElement::SaveVideo(const std::string &strImageName) {
    INFO("SaveVideo: " << strImageName);
    std::string strTimeStamp = AppUtil::getTimeUSecString();
    std::string strPath = MakeDir(strTimeStamp);
    m_capture->SaveVideoByImageName(strPath, strImageName);
}
void RtspCaptureElement::openVideo()
{
    if(m_gpuIndex>=0){
        setenv("CUDA_VISIBLE_DEVICES", std::to_string(m_gpuIndex).c_str(),0);
void RtspCaptureElement::openVideo() {
    if (m_gpuIndex >= 0) {
        setenv("CUDA_VISIBLE_DEVICES", std::to_string(m_gpuIndex).c_str(), 0);
    }
    m_capture->open(m_path.c_str(),m_gpuIndex>=0);
    INFO("Open Video " << m_path << "  GPU_Index: " << m_gpuIndex);
    m_capture->open(m_path.c_str(), m_gpuIndex >= 0);
}
void RtspCaptureElement::threadInitial()
{
void RtspCaptureElement::threadInitial() {
    INFO("MYH DEBUG");
    openVideo();
}
void RtspCaptureElement::threadClosing()
{
void RtspCaptureElement::threadClosing() {
    INFO("MYH DEBUG");
    m_capture->close();
    delete m_capture;
    m_capture = nullptr;
}
void RtspCaptureElement::SetVideoMinMaxSeconds(const int minSeconds, const int maxSeconds)
{
    m_capture->SetMinMaxVideoSeconds(minSeconds,maxSeconds);
void RtspCaptureElement::SetVideoMinMaxSeconds(const int minSeconds, const int maxSeconds) {
    m_capture->SetMinMaxVideoSeconds(minSeconds, maxSeconds);
}