Tame down encoding performance alerts. Closes #338
This commit is contained in:
parent
bf4758d166
commit
a24dbc418b
@ -89,7 +89,7 @@ func (s *FileWriterReceiverService) fileWritten(path string) {
|
||||
utils.StartPerformanceMonitor(performanceMonitorKey)
|
||||
s.callbacks.SegmentWritten(path)
|
||||
|
||||
if averagePerformance != 0 && averagePerformance > float64(config.Config.GetVideoSegmentSecondsLength()) {
|
||||
if averagePerformance != 0 && averagePerformance > float64(config.Config.GetVideoSegmentSecondsLength())*1.1 {
|
||||
if !_inWarningState {
|
||||
log.Warnln("slow encoding for variant", index, "if this continues you may see buffering or errors. troubleshoot this issue by visiting https://owncast.online/docs/troubleshooting/")
|
||||
_inWarningState = true
|
||||
|
@ -48,7 +48,7 @@ func IsStreamConnected() bool {
|
||||
// Kind of a hack. It takes a handful of seconds between a RTMP connection and when HLS data is available.
|
||||
// So account for that with an artificial buffer of four segments.
|
||||
timeSinceLastConnected := time.Since(_stats.LastConnectTime.Time).Seconds()
|
||||
if timeSinceLastConnected < float64(config.Config.GetVideoSegmentSecondsLength())*2.0 {
|
||||
if timeSinceLastConnected < float64(config.Config.GetVideoSegmentSecondsLength())*2.3 {
|
||||
return false
|
||||
}
|
||||
|
||||
|
@ -13,8 +13,8 @@ var _durationStorage = make(map[string][]float64)
|
||||
|
||||
// StartPerformanceMonitor will keep track of the start time of this event.
|
||||
func StartPerformanceMonitor(key string) {
|
||||
if len(_durationStorage[key]) > 30 {
|
||||
_durationStorage[key] = removeHighAndLow(_durationStorage[key])
|
||||
if len(_durationStorage[key]) > 20 {
|
||||
_durationStorage[key] = removeHighValue(_durationStorage[key])
|
||||
}
|
||||
_pointsInTime[key] = time.Now()
|
||||
}
|
||||
@ -28,16 +28,16 @@ func GetAveragePerformance(key string) float64 {
|
||||
|
||||
delta := time.Since(timestamp).Seconds()
|
||||
_durationStorage[key] = append(_durationStorage[key], delta)
|
||||
if len(_durationStorage[key]) < 10 {
|
||||
if len(_durationStorage[key]) < 8 {
|
||||
return 0
|
||||
}
|
||||
_durationStorage[key] = removeHighAndLow(_durationStorage[key])
|
||||
_durationStorage[key] = removeHighValue(_durationStorage[key])
|
||||
return avg(_durationStorage[key])
|
||||
}
|
||||
|
||||
func removeHighAndLow(values []float64) []float64 {
|
||||
func removeHighValue(values []float64) []float64 {
|
||||
sort.Float64s(values)
|
||||
return values[1 : len(values)-1]
|
||||
return values[:len(values)-1]
|
||||
}
|
||||
|
||||
func avg(values []float64) float64 {
|
||||
|
Loading…
x
Reference in New Issue
Block a user