stream-poc2/ffmpeg/slices.go
2025-10-09 22:21:38 +02:00

62 lines
1.1 KiB
Go

package ffmpeg
import (
"encoding/csv"
"errors"
"io"
"log"
"os"
"strconv"
"stream-poc2/model"
)
func ReadSegmentsCSV(fname string) ([]model.Slice, error) {
log.Println("read csv:", fname)
f, err := os.OpenFile(fname, os.O_RDONLY, 0)
if err != nil {
log.Println("failed to open CSV:", err)
return nil, err
}
defer func(f *os.File) {
err := f.Close()
if err != nil {
log.Println("Failed to close CSV:", err)
}
}(f)
r := csv.NewReader(f)
var slices []model.Slice
for {
var cols []string
cols, err = r.Read()
if err != nil {
if errors.Is(err, io.EOF) {
break
}
log.Println("failed reading csv row", err)
return nil, err
}
var startTime float64
var endTime float64
startTime, err = strconv.ParseFloat(cols[1], 64)
if err != nil {
log.Println("Failed to parse float", err)
return nil, err
}
endTime, err = strconv.ParseFloat(cols[2], 64)
if err != nil {
log.Println("Failed to parse float", err)
return nil, err
}
slices = append(slices, model.Slice{
Name: cols[0],
StartTime: startTime,
EndTime: endTime,
})
}
return slices, nil
}