pansen
2019-03-15 83e41a2ac316be500a7be633fbf748693151f747
保存第一张i帧作为底图
2个文件已修改
19 ■■■■ 已修改文件
QiaoJiaSystem/GB28181DecoderModel/FFmpegDecoderJPG.cpp 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
QiaoJiaSystem/GB28181DecoderModel/FFmpegDecoderJPG.h 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
QiaoJiaSystem/GB28181DecoderModel/FFmpegDecoderJPG.cpp
@@ -267,6 +267,18 @@
//        BASICGB28181::avframe_to_cvmat(frame).copyTo(p_this->m_image);
            p_this->m_image = std::move(BASICGB28181::avframe_to_cvmat(p_this->frame));
            if (p_this->m_SnapshotNotSaveRet && (p_this->pkt.flags & AV_PKT_FLAG_KEY)) {
                try {
                    std::string strNewName = "./";
                    strNewName.append(p_this->m_camIdx).append(".jpg");
                    cv::imwrite(strNewName, p_this->m_image);
                    p_this->m_SnapshotNotSaveRet = false;
                } catch (std::exception ex) {
                    ERR(ex.what());
                }
            }
#ifdef TestCode
            {
    //            TestCode 测试代码保存图片到本地
@@ -447,7 +459,8 @@
        for (const auto &item:m_packetsVec) {
            if (item.m_frameId < lastFrameId) {
                DBG("item.m_frameId < lastFrameId   " << item.m_frameId << "  " << lastFrameId);
                conversion(const_cast<AVPacket *> (&item.m_packet), firstKeyFramePts, firstKeyFrameDts, video_st, frame_index);
                conversion(const_cast<AVPacket *> (&item.m_packet), firstKeyFramePts, firstKeyFrameDts, video_st,
                           frame_index);
                frame_index++;
                av_write_frame(m_pOutFmtCtx, &item.m_packet);
            } else {
QiaoJiaSystem/GB28181DecoderModel/FFmpegDecoderJPG.h
@@ -199,7 +199,8 @@
        int stopWrite();
        //对packet做转换
        void conversion(void *packet, const long int &firstKeyPts, const long int &firstKeyDts, void *inVideoStream, unsigned long int frame_index = 0);
        void conversion(void *packet, const long int &firstKeyPts, const long int &firstKeyDts, void *inVideoStream,
                        unsigned long int frame_index = 0);
        bool m_bstartWrite = {false};
        bool m_bFirstKeyFrame = {false};
@@ -226,6 +227,7 @@
        int m_gpuIdx;
        int m_fps;
        bool m_PackageState;
        bool m_SnapshotNotSaveRet{true};
        std::string m_camIdx;
        MyQueue<frameBuffInfo *> m_rtpQueue;