2025-03-14 13:34:11 +05:00

58 lines
1.4 KiB
Go

package config
import (
"git.insit.tech/sas/rtsp_proxy/protos"
"gopkg.in/yaml.v3"
"log"
"os"
"strings"
"time"
)
// ParseCamerasYAML parses camera links from YAML file into struct Cameras.
func ParseCamerasYAML(dir string) (map[string]string, error) {
var CamerasYAML map[string]string
data, err := os.ReadFile(dir + "rtsp_reader-writer/writer/internal/config/source.yaml")
if err != nil {
return CamerasYAML, err
}
err = yaml.Unmarshal(data, &CamerasYAML)
if err != nil {
return CamerasYAML, err
}
return CamerasYAML, nil
}
// CutURI returns the last part of the URI after "/".
func CutURI(URI string) (CutterURI string) {
splitted := strings.Split(URI, "/")
return splitted[len(splitted)-1]
}
// CreateFileName creates FileName structure.
func CreateFileName(dir string, resolutions []string, URI string, period int) *protos.FileName {
fn := protos.FileName{
Path: dir + "/data/" + URI + "/" + resolutions[0],
TimeNow: time.Now().Format("15-04-05_02-01-2006"),
Name: "videoFragment",
Number: -1,
Duration: float64(period * 60),
}
return &fn
}
// Waiter waits for the next period.
func Waiter(period int) {
periodTD := time.Duration(period) * time.Minute
now := time.Now()
nextSegment := now.Truncate(periodTD).Add(periodTD)
waitDuration := nextSegment.Sub(now)
log.Printf("waiting for start recording: %v\n", waitDuration)
time.Sleep(waitDuration)
}