0

Tame down encoding performance alerts. Closes #338

This commit is contained in:
Gabe Kangas 2020-11-16 21:02:48 -08:00
parent bf4758d166
commit a24dbc418b
3 changed files with 8 additions and 8 deletions

View File

@ -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

View File

@ -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
}

View File

@ -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 {