Use the highest quality video segment to creat thumbnails from. Closes
This commit is contained in:
@@ -5,10 +5,9 @@ import (
|
||||
"fmt"
|
||||
"io/ioutil"
|
||||
|
||||
"github.com/gabek/owncast/utils"
|
||||
log "github.com/sirupsen/logrus"
|
||||
"gopkg.in/yaml.v2"
|
||||
|
||||
"github.com/gabek/owncast/utils"
|
||||
)
|
||||
|
||||
//Config contains a reference to the configuration
|
||||
@@ -45,10 +44,11 @@ type socialHandle struct {
|
||||
}
|
||||
|
||||
type videoSettings struct {
|
||||
ChunkLengthInSeconds int `yaml:"chunkLengthInSeconds"`
|
||||
StreamingKey string `yaml:"streamingKey"`
|
||||
StreamQualities []StreamQuality `yaml:"streamQualities"`
|
||||
OfflineContent string `yaml:"offlineContent"`
|
||||
ChunkLengthInSeconds int `yaml:"chunkLengthInSeconds"`
|
||||
StreamingKey string `yaml:"streamingKey"`
|
||||
StreamQualities []StreamQuality `yaml:"streamQualities"`
|
||||
OfflineContent string `yaml:"offlineContent"`
|
||||
HighestQualityStreamIndex int `yaml"-"`
|
||||
}
|
||||
|
||||
// StreamQuality defines the specifics of a single HLS stream variant.
|
||||
@@ -106,6 +106,8 @@ func (c *config) load(filePath string) error {
|
||||
return err
|
||||
}
|
||||
|
||||
c.VideoSettings.HighestQualityStreamIndex = findHighestQuality(c.VideoSettings.StreamQualities)
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
|
||||
34
config/configUtils.go
Normal file
34
config/configUtils.go
Normal file
@@ -0,0 +1,34 @@
|
||||
package config
|
||||
|
||||
import "sort"
|
||||
|
||||
func findHighestQuality(qualities []StreamQuality) int {
|
||||
type IndexedQuality struct {
|
||||
index int
|
||||
quality StreamQuality
|
||||
}
|
||||
|
||||
if len(qualities) < 2 {
|
||||
return 0
|
||||
}
|
||||
|
||||
indexedQualities := make([]IndexedQuality, 0)
|
||||
for index, quality := range qualities {
|
||||
indexedQuality := IndexedQuality{index, quality}
|
||||
indexedQualities = append(indexedQualities, indexedQuality)
|
||||
}
|
||||
|
||||
sort.Slice(indexedQualities, func(a, b int) bool {
|
||||
if indexedQualities[a].quality.IsVideoPassthrough && !indexedQualities[b].quality.IsVideoPassthrough {
|
||||
return true
|
||||
}
|
||||
|
||||
if !indexedQualities[a].quality.IsVideoPassthrough && indexedQualities[b].quality.IsVideoPassthrough {
|
||||
return false
|
||||
}
|
||||
|
||||
return indexedQualities[a].quality.VideoBitrate > indexedQualities[b].quality.VideoBitrate
|
||||
})
|
||||
|
||||
return indexedQualities[0].index
|
||||
}
|
||||
Reference in New Issue
Block a user