添加gpio控制/进程健康管理
This commit is contained in:
@@ -292,3 +292,44 @@ func CleanupOldVideos(deviceUUID string) {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// CleanupOldRawVideos 清理推理程序生成的原始10s视频,保留最近60条
|
||||
func CleanupOldRawVideos(deviceUUID string) {
|
||||
rawDir := filepath.Join("/usr/data/camera", deviceUUID)
|
||||
if _, err := os.Stat(rawDir); os.IsNotExist(err) {
|
||||
return // 目录不存在,直接返回
|
||||
}
|
||||
|
||||
files, err := os.ReadDir(rawDir)
|
||||
if err != nil {
|
||||
logger.Logger.Printf("Failed to read the original video directory %s: %v", rawDir, err)
|
||||
return
|
||||
}
|
||||
|
||||
var videoFiles []string
|
||||
for _, file := range files {
|
||||
if !file.IsDir() && filepath.Ext(file.Name()) == ".mp4" { // 假设是mp4,也可以加更多判断
|
||||
videoFiles = append(videoFiles, filepath.Join(rawDir, file.Name()))
|
||||
}
|
||||
}
|
||||
|
||||
if len(videoFiles) <= 60 {
|
||||
return // 不超过60条,不清理
|
||||
}
|
||||
|
||||
// 按修改时间排序(旧 → 新)
|
||||
sort.Slice(videoFiles, func(i, j int) bool {
|
||||
fi, _ := os.Stat(videoFiles[i])
|
||||
fj, _ := os.Stat(videoFiles[j])
|
||||
return fi.ModTime().Before(fj.ModTime())
|
||||
})
|
||||
|
||||
// 删除最早的(超过60条的部分)
|
||||
for i := 0; i < len(videoFiles)-60; i++ {
|
||||
if err := os.Remove(videoFiles[i]); err != nil {
|
||||
logger.Logger.Printf("Failed to delete the old original video %s: %v", videoFiles[i], err)
|
||||
} else {
|
||||
logger.Logger.Printf("Clear the old original videos: %s", videoFiles[i])
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user