58 lines
1.4 KiB
Go
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() (map[string]string, error) {
|
|
var CamerasYAML map[string]string
|
|
|
|
data, err := os.ReadFile("/home/psa/GoRepository/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(resolutions []string, URI string, period int) *protos.FileName {
|
|
fn := protos.FileName{
|
|
Path: "/home/psa/GoRepository/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)
|
|
}
|