62 lines
1.1 KiB
Go
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
|
|
}
|