Save processed segments in the stream

This commit is contained in:
Zoe Roux 2024-01-14 15:36:10 +01:00
parent 5d47a28ba6
commit e5954712e2

View File

@ -1,6 +1,7 @@
package src
import (
"bufio"
"context"
"fmt"
"log"
@ -76,6 +77,38 @@ func (ts *Stream) run(start int32, end int32) error {
)
log.Printf("Running %s", strings.Join(cmd.Args, " "))
stdout, err := cmd.StdoutPipe()
if err != nil {
return err
}
var stderr strings.Builder
cmd.Stderr = &stderr
go func() {
scanner := bufio.NewScanner(stdout)
for scanner.Scan() {
var segment int32
_, _ = fmt.Sscanf(scanner.Text(), "segment-%d.ts", &segment)
ts.lock.Lock()
ts.segments[segment] = true
ts.lock.Unlock()
}
if err := scanner.Err(); err != nil {
log.Println("Error reading stdout of ffmpeg", err)
}
}()
go func() {
err := cmd.Wait()
if err != nil {
log.Println("ffmpeg occured an error", err, stderr.String())
} else {
log.Println("ffmpeg finished successfully")
}
}()
return nil
}