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
|
/// sagen ihm nur, dass er sich nicht mit weniger zufriedengeben soll, als
|
||||||
/// er von sich aus täte.
|
/// er von sich aus täte.
|
||||||
///
|
///
|
||||||
/// Eine Minute. Der Preis ist Datenvolumen, das beim Spulen verfällt, und
|
/// **Zwei Zahlen, weil es zwei verschiedene Lagen sind.**
|
||||||
/// Speicher — beides tragbar. Der harte Deckel liegt ohnehin woanders:
|
///
|
||||||
/// rechnet der Server gerade um, existieren die Schnipsel noch gar nicht,
|
/// Rechnet der Server um, existieren die Schnipsel noch gar nicht — ffmpeg
|
||||||
/// und weiter voraus als ffmpeg produziert hat kommt niemand. Jellyfins
|
/// erzeugt sie gerade. Weiter voraus als bis dorthin kommt niemand, und
|
||||||
/// eigene Drosselung ist dabei nicht im Spiel — sie ist standardmässig
|
/// ein grösserer Wunsch liefe ins Leere. Eine Minute ist dort reichlich.
|
||||||
/// aus und griffe erst bei 180 Sekunden.
|
///
|
||||||
private static let forwardBuffer: Duration = .seconds(60)
|
/// 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.
|
/// Wie oft der Zustand des Streams geprüft wird.
|
||||||
///
|
///
|
||||||
@@ -703,7 +714,7 @@ final class PlayerModel {
|
|||||||
url: target.url,
|
url: target.url,
|
||||||
origin: .remote,
|
origin: .remote,
|
||||||
startTime: start,
|
startTime: start,
|
||||||
forwardBuffer: Self.forwardBuffer
|
forwardBuffer: Self.forwardBuffer(for: decision.method)
|
||||||
)
|
)
|
||||||
} catch {
|
} catch {
|
||||||
// Die Worte des Servers stehen auf dem Bildschirm, nicht „keine
|
// Die Worte des Servers stehen auf dem Bildschirm, nicht „keine
|
||||||
|
|||||||
Reference in New Issue
Block a user