Beim Durchreichen darf viel weiter vorgeladen werden
Es sind zwei verschiedene Lagen, und sie hatten bisher dieselbe Zahl. Rechnet der Server um, existieren die Schnipsel noch gar nicht — ffmpeg erzeugt sie gerade, und weiter voraus als bis dorthin kommt niemand. Eine Minute ist dort reichlich; ein groesserer Wunsch liefe ins Leere. Wird die Datei unveraendert durchgereicht, liegt sie fertig auf der Platte und kommt ueber gewoehnliche Bereichsanfragen — dieselbe Lage wie bei einem Video im Netz, das man beliebig weit vorausladen kann. Dort bei einer Minute aufzuhoeren war schlicht zu schuechtern; jetzt sind es zehn. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
f48e018fa3
commit
806eb381c7
@@ -225,13 +225,24 @@ final class PlayerModel {
|
||||
/// sagen ihm nur, dass er sich nicht mit weniger zufriedengeben soll, als
|
||||
/// er von sich aus täte.
|
||||
///
|
||||
/// Eine Minute. Der Preis ist Datenvolumen, das beim Spulen verfällt, und
|
||||
/// Speicher — beides tragbar. Der harte Deckel liegt ohnehin woanders:
|
||||
/// rechnet der Server gerade um, existieren die Schnipsel noch gar nicht,
|
||||
/// und weiter voraus als ffmpeg produziert hat kommt niemand. Jellyfins
|
||||
/// eigene Drosselung ist dabei nicht im Spiel — sie ist standardmässig
|
||||
/// aus und griffe erst bei 180 Sekunden.
|
||||
private static let forwardBuffer: Duration = .seconds(60)
|
||||
/// **Zwei Zahlen, weil es zwei verschiedene Lagen sind.**
|
||||
///
|
||||
/// Rechnet der Server um, existieren die Schnipsel noch gar nicht — ffmpeg
|
||||
/// erzeugt sie gerade. Weiter voraus als bis dorthin kommt niemand, und
|
||||
/// ein grösserer Wunsch liefe ins Leere. Eine Minute ist dort reichlich.
|
||||
///
|
||||
/// Wird die Datei dagegen unverändert durchgereicht, liegt sie fertig auf
|
||||
/// der Platte und kommt über gewöhnliche Bereichsanfragen — dieselbe Lage
|
||||
/// wie bei einem Video im Netz, das man beliebig weit vorausladen kann.
|
||||
/// Dort bei einer Minute aufzuhören war schlicht zu schüchtern.
|
||||
///
|
||||
/// Der Preis ist Datenvolumen, das beim Spulen verfällt. Beim
|
||||
/// Durchreichen ist das verschmerzbar: die Datei wird ohnehin als Ganzes
|
||||
/// geholt, wenn man sie zu Ende sieht.
|
||||
private static func forwardBuffer(for method: PlaybackDecision.Method) -> Duration {
|
||||
if case .directPlay = method { return .seconds(600) }
|
||||
return .seconds(60)
|
||||
}
|
||||
|
||||
/// Wie oft der Zustand des Streams geprüft wird.
|
||||
///
|
||||
@@ -703,7 +714,7 @@ final class PlayerModel {
|
||||
url: target.url,
|
||||
origin: .remote,
|
||||
startTime: start,
|
||||
forwardBuffer: Self.forwardBuffer
|
||||
forwardBuffer: Self.forwardBuffer(for: decision.method)
|
||||
)
|
||||
} catch {
|
||||
// Die Worte des Servers stehen auf dem Bildschirm, nicht „keine
|
||||
|
||||
Reference in New Issue
Block a user