mirror of
https://github.com/langhuihui/monibuca.git
synced 2025-09-27 09:52:06 +08:00
fix:
1.recordmode:Change "recordmode" from the original "1, 0" to "auto, event". original is :1 is event record,0 is auto record. 2.eventleve:Change "eventlevel" from the original "0, 1" to "high, low". original is :1 is event low,0 is event high.
This commit is contained in:
@@ -184,7 +184,10 @@ func (p *MP4Plugin) download(w http.ResponseWriter, r *http.Request) {
|
|||||||
p.Info("download", "streamPath", streamPath, "start", startTime, "end", endTime)
|
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")))
|
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 stream_path=? AND record_mode=0", startTime, endTime, streamPath)
|
queryRecord := m7s.RecordStream{
|
||||||
|
Mode: m7s.RecordModeAuto,
|
||||||
|
}
|
||||||
|
p.DB.Where(&queryRecord).Find(&streams, "end_time>? AND start_time<? AND stream_path=?", startTime, endTime, streamPath)
|
||||||
muxer := mp4.NewMuxer(0)
|
muxer := mp4.NewMuxer(0)
|
||||||
var n int
|
var n int
|
||||||
n, err = w.Write(box.MakeFtypBox(box.TypeISOM, 0x200, box.TypeISOM, box.TypeISO2, box.TypeAVC1, box.TypeMP41))
|
n, err = w.Write(box.MakeFtypBox(box.TypeISOM, 0x200, box.TypeISOM, box.TypeISO2, box.TypeAVC1, box.TypeMP41))
|
||||||
|
@@ -89,7 +89,7 @@ func (p *DeleteRecordTask) deleteOldestFile() {
|
|||||||
//连续录像删除最旧的文件
|
//连续录像删除最旧的文件
|
||||||
for p.getDiskOutOfSpace(p.AutoOverWriteDiskPercent) {
|
for p.getDiskOutOfSpace(p.AutoOverWriteDiskPercent) {
|
||||||
queryRecord := m7s.RecordStream{
|
queryRecord := m7s.RecordStream{
|
||||||
EventLevel: "1", // 查询条件:event_level = 1,非重要事件
|
EventLevel: m7s.EventLevelLow, // 查询条件:event_level = 1,非重要事件
|
||||||
}
|
}
|
||||||
var eventRecords []m7s.RecordStream
|
var eventRecords []m7s.RecordStream
|
||||||
err := p.DB.Where(&queryRecord).Where("end_time != '1970-01-01 00:00:00'").Order("end_time ASC").Limit(1).Find(&eventRecords).Error
|
err := p.DB.Where(&queryRecord).Where("end_time != '1970-01-01 00:00:00'").Order("end_time ASC").Limit(1).Find(&eventRecords).Error
|
||||||
@@ -135,7 +135,10 @@ func (t *DeleteRecordTask) Tick(any) {
|
|||||||
var eventRecords []m7s.RecordStream
|
var eventRecords []m7s.RecordStream
|
||||||
expireTime := time.Now().AddDate(0, 0, -t.RecordFileExpireDays)
|
expireTime := time.Now().AddDate(0, 0, -t.RecordFileExpireDays)
|
||||||
t.Debug("RecordFileExpireDays is set to auto delete oldestfile", "expireTime", expireTime.Format("2006-01-02 15:04:05"))
|
t.Debug("RecordFileExpireDays is set to auto delete oldestfile", "expireTime", expireTime.Format("2006-01-02 15:04:05"))
|
||||||
err := t.DB.Find(&eventRecords, "end_time < ? AND event_level=1 AND end_time != '1970-01-01 00:00:00'", expireTime).Error
|
queryRecord := m7s.RecordStream{
|
||||||
|
EventLevel: m7s.EventLevelLow, // 查询条件:event_level = low,非重要事件
|
||||||
|
}
|
||||||
|
err := t.DB.Where(&queryRecord).Find(&eventRecords, "end_time < ? AND end_time != '1970-01-01 00:00:00'", expireTime).Error
|
||||||
if err == nil {
|
if err == nil {
|
||||||
for _, record := range eventRecords {
|
for _, record := range eventRecords {
|
||||||
t.Info("RecordFileExpireDays is set to auto delete oldestfile", "ID", record.ID, "create time", record.EndTime, "filepath", record.FilePath)
|
t.Info("RecordFileExpireDays is set to auto delete oldestfile", "ID", record.ID, "create time", record.EndTime, "filepath", record.FilePath)
|
||||||
|
@@ -82,18 +82,23 @@ type eventRecordCheck struct {
|
|||||||
|
|
||||||
func (t *eventRecordCheck) Run() (err error) {
|
func (t *eventRecordCheck) Run() (err error) {
|
||||||
var eventRecordStreams []m7s.RecordStream
|
var eventRecordStreams []m7s.RecordStream
|
||||||
t.DB.Find(&eventRecordStreams, "record_mode=1 AND event_level=0 AND stream_path=?", t.streamPath) //搜索事件录像,且为重要事件(无法自动删除)
|
queryRecord := m7s.RecordStream{
|
||||||
|
EventLevel: m7s.EventLevelHigh,
|
||||||
|
Mode: m7s.RecordModeEvent,
|
||||||
|
}
|
||||||
|
t.DB.Where(&queryRecord).Find(&eventRecordStreams, "stream_path=?", t.streamPath) //搜索事件录像,且为重要事件(无法自动删除)
|
||||||
if len(eventRecordStreams) > 0 {
|
if len(eventRecordStreams) > 0 {
|
||||||
for _, recordStream := range eventRecordStreams {
|
for _, recordStream := range eventRecordStreams {
|
||||||
var unimportantEventRecordStreams []m7s.RecordStream
|
var unimportantEventRecordStreams []m7s.RecordStream
|
||||||
|
queryRecord.EventLevel = m7s.EventLevelLow
|
||||||
query := `(start_time BETWEEN ? AND ?)
|
query := `(start_time BETWEEN ? AND ?)
|
||||||
OR (end_time BETWEEN ? AND ?)
|
OR (end_time BETWEEN ? AND ?)
|
||||||
OR (? BETWEEN start_time AND end_time)
|
OR (? BETWEEN start_time AND end_time)
|
||||||
OR (? BETWEEN start_time AND end_time) AND event_level=1 AND stream_path=? `
|
OR (? BETWEEN start_time AND end_time) AND stream_path=? `
|
||||||
t.DB.Where(query, recordStream.StartTime, recordStream.EndTime, recordStream.StartTime, recordStream.EndTime, recordStream.StartTime, recordStream.EndTime, recordStream.StreamPath).Find(&unimportantEventRecordStreams)
|
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 {
|
if len(unimportantEventRecordStreams) > 0 {
|
||||||
for _, unimportantEventRecordStream := range unimportantEventRecordStreams {
|
for _, unimportantEventRecordStream := range unimportantEventRecordStreams {
|
||||||
unimportantEventRecordStream.EventLevel = "0"
|
unimportantEventRecordStream.EventLevel = m7s.EventLevelHigh
|
||||||
t.DB.Save(&unimportantEventRecordStream)
|
t.DB.Save(&unimportantEventRecordStream)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -208,7 +208,10 @@ func (p *RecordFilePuller) Start() (err error) {
|
|||||||
if p.PullStartTime, p.PullEndTime, err = util.TimeRangeQueryParse(p.PullJob.Args); err != nil {
|
if p.PullStartTime, p.PullEndTime, err = util.TimeRangeQueryParse(p.PullJob.Args); err != nil {
|
||||||
return
|
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 {
|
if tx.Error != nil {
|
||||||
return tx.Error
|
return tx.Error
|
||||||
}
|
}
|
||||||
|
@@ -15,9 +15,12 @@ import (
|
|||||||
const (
|
const (
|
||||||
RecordModeAuto RecordMode = "auto"
|
RecordModeAuto RecordMode = "auto"
|
||||||
RecordModeEvent RecordMode = "event"
|
RecordModeEvent RecordMode = "event"
|
||||||
|
EventLevelLow EventLevel = "low"
|
||||||
|
EventLevelHigh EventLevel = "high"
|
||||||
)
|
)
|
||||||
|
|
||||||
type (
|
type (
|
||||||
|
EventLevel = string
|
||||||
RecordMode = string
|
RecordMode = string
|
||||||
IRecorder interface {
|
IRecorder interface {
|
||||||
task.ITask
|
task.ITask
|
||||||
@@ -39,7 +42,7 @@ type (
|
|||||||
BeforeDuration time.Duration `json:"beforeDuration" desc:"事件前缓存时长"`
|
BeforeDuration time.Duration `json:"beforeDuration" desc:"事件前缓存时长"`
|
||||||
AfterDuration time.Duration `json:"afterDuration" desc:"事件后缓存时长"`
|
AfterDuration time.Duration `json:"afterDuration" desc:"事件后缓存时长"`
|
||||||
EventDesc string `json:"eventDesc" desc:"事件描述"`
|
EventDesc string `json:"eventDesc" desc:"事件描述"`
|
||||||
EventLevel string `json:"eventLevel" desc:"事件级别"`
|
EventLevel EventLevel `json:"eventLevel" desc:"事件级别"`
|
||||||
EventName string `json:"eventName" desc:"事件名称"`
|
EventName string `json:"eventName" desc:"事件名称"`
|
||||||
}
|
}
|
||||||
DefaultRecorder struct {
|
DefaultRecorder struct {
|
||||||
@@ -57,7 +60,7 @@ type (
|
|||||||
Filename string `json:"fileName" desc:"文件名" gorm:"type:varchar(255);comment:文件名"`
|
Filename string `json:"fileName" desc:"文件名" gorm:"type:varchar(255);comment:文件名"`
|
||||||
EventDesc string `json:"eventDesc" 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"`
|
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
|
FilePath string
|
||||||
StreamPath string
|
StreamPath string
|
||||||
AudioCodec, VideoCodec string
|
AudioCodec, VideoCodec string
|
||||||
|
Reference in New Issue
Block a user