Try to prefer transmux instead of transcode (not sure yet)

This commit is contained in:
Zoe Roux
2024-02-18 15:38:37 +01:00
parent 7f6721147a
commit 79dc4e5f33
5 changed files with 61 additions and 55 deletions
+10 -2
View File
@@ -153,10 +153,18 @@ func (fs *FileStream) GetMaster() string {
master := "#EXTM3U\n"
// TODO: also check if the codec is valid in a hls before putting transmux
if fs.Info.Video != nil {
var transmux_quality Quality
for _, quality := range Qualities {
if quality.Height() >= fs.Info.Video.Quality.Height() || quality.AverageBitrate() >= fs.Info.Video.Bitrate {
transmux_quality = quality
break
}
}
if fs.CanTransmux {
bitrate := float64(fs.Info.Video.Bitrate)
master += "#EXT-X-STREAM-INF:"
master += fmt.Sprintf("AVERAGE-BANDWIDTH=%d,", fs.Info.Video.Bitrate)
master += fmt.Sprintf("BANDWIDTH=%d,", int(float32(fs.Info.Video.Bitrate)*1.2))
master += fmt.Sprintf("AVERAGE-BANDWIDTH=%d,", int(math.Min(bitrate*0.8, float64(transmux_quality.AverageBitrate()))))
master += fmt.Sprintf("BANDWIDTH=%d,", int(math.Min(bitrate, float64(transmux_quality.MaxBitrate()))))
master += fmt.Sprintf("RESOLUTION=%dx%d,", fs.Info.Video.Width, fs.Info.Video.Height)
master += "AUDIO=\"audio\","
master += "CLOSED-CAPTIONS=NONE\n"
+16 -16
View File
@@ -41,21 +41,21 @@ func QualityFromString(str string) (Quality, error) {
func (v Quality) AverageBitrate() uint32 {
switch v {
case P240:
return 400000
return 400_000
case P360:
return 800000
return 800_000
case P480:
return 1200000
return 1_200_000
case P720:
return 2400000
return 2_400_000
case P1080:
return 4800000
return 4_800_000
case P1440:
return 9600000
return 9_600_000
case P4k:
return 16000000
return 16_000_000
case P8k:
return 28000000
return 28_000_000
case Original:
panic("Original quality must be handled specially")
}
@@ -65,21 +65,21 @@ func (v Quality) AverageBitrate() uint32 {
func (v Quality) MaxBitrate() uint32 {
switch v {
case P240:
return 700000
return 700_000
case P360:
return 1400000
return 1_400_000
case P480:
return 2100000
return 2_100_000
case P720:
return 4000000
return 4_000_000
case P1080:
return 8000000
return 8_000_000
case P1440:
return 12000000
return 12_000_000
case P4k:
return 28000000
return 28_000_000
case P8k:
return 40000000
return 40_000_000
case Original:
panic("Original quality must be handled specially")
}