video analysis2.0拆分,ffmpeg封装go接口库
zhangmeng
2020-01-19 d0b8204e3939e1e2d841a90ea254bc4b91309ab5
csrc/worker/rec.cpp
@@ -16,13 +16,13 @@
using namespace ffwrapper;
using namespace cffmpeg_wrap::buz;
static const int cache_time = 30 * 60;
static const int cache_time = 3 * 60 + 30;
namespace cffmpeg_wrap
{
    rec::rec()
    :recRef_(NULL)
    ,min_cache_len_(cache_time * 25) // 最小缓存?分钟的视频,因为整个流程会有延迟,暂定?分钟
    ,min_cache_len_(cache_time * 25)
    {}
    rec::~rec()
@@ -75,7 +75,7 @@
                        start_id = i.v_id;
                    }
                }
            }else if (recRef_->isVideoPkt(&i.data->getAVPacket())){
            }else {
                // 视频帧,看是否缓存中有所有的duration数据
                if (i.v_id - start_id == duration){
                    end = index;
@@ -255,16 +255,18 @@
    void rec::SetRecMinCacheTime(const int min){
        // 由于整个流程耗时,补偿time_offset_
        int fps = 25;
        if (recRef_){
            fps = recRef_->getFPS();
        }
        min_cache_len_ += min * fps;
        // int fps = 25;
        // if (recRef_){
        //     fps = recRef_->getFPS();
        // }
        // if (min_cache_len_ > (cache_time+min) * fps){
        //     return;
        // }
        // min_cache_len_ += min * fps;
    }
    int rec::shrinkCache(){
        //超过最大缓存,丢弃gop        
        while (list_pkt_.size() > min_cache_len_) {
            list_pkt_.pop_front();
            while(!list_pkt_.empty()){