mirror of
https://github.com/zoriya/Kyoo.git
synced 2025-05-24 02:02:36 -04:00
Fix distance unit and make segment timeout bigger
This commit is contained in:
parent
983b558510
commit
09b146928c
@ -165,6 +165,7 @@ func (ts *Stream) run(start int32) error {
|
|||||||
if ts.isSegmentReady(segment) {
|
if ts.isSegmentReady(segment) {
|
||||||
// the current segment is already marked at done so another process has already gone up to here.
|
// the current segment is already marked at done so another process has already gone up to here.
|
||||||
cmd.Process.Signal(os.Interrupt)
|
cmd.Process.Signal(os.Interrupt)
|
||||||
|
log.Printf("Killing ffmpeg because segment %d is already ready", segment)
|
||||||
should_stop = true
|
should_stop = true
|
||||||
} else {
|
} else {
|
||||||
close(ts.segments[segment])
|
close(ts.segments[segment])
|
||||||
@ -173,6 +174,7 @@ func (ts *Stream) run(start int32) error {
|
|||||||
should_stop = true
|
should_stop = true
|
||||||
} else if ts.isSegmentReady(segment + 1) {
|
} else if ts.isSegmentReady(segment + 1) {
|
||||||
cmd.Process.Signal(os.Interrupt)
|
cmd.Process.Signal(os.Interrupt)
|
||||||
|
log.Printf("Killing ffmpeg because next segment %d is ready", segment)
|
||||||
should_stop = true
|
should_stop = true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -251,15 +253,15 @@ func (ts *Stream) GetSegment(segment int32) (string, error) {
|
|||||||
ts.lock.RUnlock()
|
ts.lock.RUnlock()
|
||||||
|
|
||||||
if !ready {
|
if !ready {
|
||||||
// Only start a new encode if there is more than 10s between the current encoder and the segment.
|
// Only start a new encode if there is too big a distance between the current encoder and the segment.
|
||||||
if distance > 10_000 {
|
if distance > 60 {
|
||||||
log.Printf("Creating new head for %d since closest head is %fs aways", segment, distance/1000)
|
log.Printf("Creating new head for %d since closest head is %fs aways", segment, distance)
|
||||||
err := ts.run(segment)
|
err := ts.run(segment)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", err
|
return "", err
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
log.Printf("Waiting for segment %d since encoder head is %fs aways", segment, distance/1000)
|
log.Printf("Waiting for segment %d since encoder head is %fs aways", segment, distance)
|
||||||
}
|
}
|
||||||
|
|
||||||
ts.lock.RLock()
|
ts.lock.RLock()
|
||||||
@ -268,7 +270,7 @@ func (ts *Stream) GetSegment(segment int32) (string, error) {
|
|||||||
|
|
||||||
select {
|
select {
|
||||||
case <-ready_chan:
|
case <-ready_chan:
|
||||||
case <-time.After(10 * time.Second):
|
case <-time.After(60 * time.Second):
|
||||||
return "", errors.New("could not retrive the selected segment (timeout)")
|
return "", errors.New("could not retrive the selected segment (timeout)")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user