video analysis2.0拆分,ffmpeg封装go接口库
zhangmeng
2019-10-19 7e6f863a5928b8481975e9fdf6460dde2c0b14bf
csrc/worker/rec.cpp
@@ -21,7 +21,7 @@
    rec::rec()
    :recRef_(NULL)
    ,min_cache_len_(125)
    ,time_offset_(4)
    ,time_offset_(5)
    {}
    rec::~rec()
@@ -195,15 +195,25 @@
    }
    void rec::SetRecMinCacheTime(const int min){
        // 由于整个流程耗时,补偿time_offset_,因为是最小的一半,只有time_offset_/2
        min_cache_len_ = (min + time_offset_) * recRef_->getFPS();
        // 由于整个流程耗时,补偿time_offset_
        int fps = 25;
        if (recRef_){
            fps = recRef_->getFPS();
        }
        min_cache_len_ = (min + time_offset_) * fps;
    }
    int rec::shrinkCache(){
        //超过最大缓存,丢弃gop
        //缓存最小长度的,用于记录
        int md = min_cache_len_ < 200 ? 200 : min_cache_len_;
        while (list_pkt_.size() > md/2) {
        int fps = 25;
        if (recRef_){
            fps = recRef_->getFPS();
        }
        // 最小5秒长度
        int mincache = fps * 5;
        int md = min_cache_len_ < mincache ? mincache : min_cache_len_;
        while (list_pkt_.size() > md) {
            list_pkt_.pop_front();
            while(!list_pkt_.empty()){
                auto &i = list_pkt_.front();