diff --git a/plugin/mp4/api.go b/plugin/mp4/api.go index 0ec60e0..286106b 100644 --- a/plugin/mp4/api.go +++ b/plugin/mp4/api.go @@ -184,7 +184,10 @@ func (p *MP4Plugin) download(w http.ResponseWriter, r *http.Request) { p.Info("download", "streamPath", streamPath, "start", startTime, "end", endTime) w.Header().Set("Content-Disposition", fmt.Sprintf("attachment; filename=%s_%s_%s.mp4", streamPath, startTime.Format("20060102150405"), endTime.Format("20060102150405"))) - p.DB.Find(&streams, "end_time>? AND start_time? AND start_time 0 { for _, recordStream := range eventRecordStreams { var unimportantEventRecordStreams []m7s.RecordStream + queryRecord.EventLevel = m7s.EventLevelLow query := `(start_time BETWEEN ? AND ?) OR (end_time BETWEEN ? AND ?) OR (? BETWEEN start_time AND end_time) - OR (? BETWEEN start_time AND end_time) AND event_level=1 AND stream_path=? ` - t.DB.Where(query, recordStream.StartTime, recordStream.EndTime, recordStream.StartTime, recordStream.EndTime, recordStream.StartTime, recordStream.EndTime, recordStream.StreamPath).Find(&unimportantEventRecordStreams) + OR (? BETWEEN start_time AND end_time) AND stream_path=? ` + t.DB.Where(&queryRecord).Where(query, recordStream.StartTime, recordStream.EndTime, recordStream.StartTime, recordStream.EndTime, recordStream.StartTime, recordStream.EndTime, recordStream.StreamPath).Find(&unimportantEventRecordStreams) if len(unimportantEventRecordStreams) > 0 { for _, unimportantEventRecordStream := range unimportantEventRecordStreams { - unimportantEventRecordStream.EventLevel = "0" + unimportantEventRecordStream.EventLevel = m7s.EventLevelHigh t.DB.Save(&unimportantEventRecordStream) } } diff --git a/puller.go b/puller.go index b8ae58f..025f997 100644 --- a/puller.go +++ b/puller.go @@ -208,7 +208,10 @@ func (p *RecordFilePuller) Start() (err error) { if p.PullStartTime, p.PullEndTime, err = util.TimeRangeQueryParse(p.PullJob.Args); err != nil { return } - tx := p.PullJob.Plugin.DB.Find(&p.Streams, "end_time>=? AND start_time<=? AND stream_path=? AND record_mode=0", p.PullStartTime, p.PullEndTime, p.PullJob.RemoteURL) + queryRecord := RecordStream{ + Mode: EventLevelHigh, + } + tx := p.PullJob.Plugin.DB.Where(&queryRecord).Find(&p.Streams, "end_time>=? AND start_time<=? AND stream_path=?", p.PullStartTime, p.PullEndTime, p.PullJob.RemoteURL) if tx.Error != nil { return tx.Error } diff --git a/recoder.go b/recoder.go index 7a14295..3692a20 100644 --- a/recoder.go +++ b/recoder.go @@ -15,9 +15,12 @@ import ( const ( RecordModeAuto RecordMode = "auto" RecordModeEvent RecordMode = "event" + EventLevelLow EventLevel = "low" + EventLevelHigh EventLevel = "high" ) type ( + EventLevel = string RecordMode = string IRecorder interface { task.ITask @@ -39,7 +42,7 @@ type ( BeforeDuration time.Duration `json:"beforeDuration" desc:"事件前缓存时长"` AfterDuration time.Duration `json:"afterDuration" desc:"事件后缓存时长"` EventDesc string `json:"eventDesc" desc:"事件描述"` - EventLevel string `json:"eventLevel" desc:"事件级别"` + EventLevel EventLevel `json:"eventLevel" desc:"事件级别"` EventName string `json:"eventName" desc:"事件名称"` } DefaultRecorder struct { @@ -57,7 +60,7 @@ type ( Filename string `json:"fileName" desc:"文件名" gorm:"type:varchar(255);comment:文件名"` EventDesc string `json:"eventDesc" desc:"事件描述" gorm:"type:varchar(255);comment:事件描述"` Type string `json:"type" desc:"录像文件类型" gorm:"type:varchar(255);comment:录像文件类型,flv,mp4,raw,fmp4,hls"` - EventLevel string `json:"eventLevel" desc:"事件级别" gorm:"type:varchar(255);comment:事件级别,0表示重要事件,无法删除且表示无需自动删除,1表示非重要事件,达到自动删除时间后,自动删除;default:'1'"` + EventLevel EventLevel `json:"eventLevel" desc:"事件级别" gorm:"type:varchar(255);comment:事件级别,high表示重要事件,无法删除且表示无需自动删除,low表示非重要事件,达到自动删除时间后,自动删除;default:'low'"` FilePath string StreamPath string AudioCodec, VideoCodec string