fix(player): intercept spurious mid-file EOF and recover in place
close #1520 Classify player EOF signals against the best-known duration: a mid-file EOF means the stream died (transcode reaped or idle connection closed during a long pause), not that the media ended — it must never mark the item watched, prompt Play Next, or exit a movie. Recover with a bounded in-place reload at the parked position; if the server is still refusing, park on the old frame and rebuild the stream on user play/seek or when the server-status monitor sees it come back online.
This commit is contained in:
@@ -1672,6 +1672,9 @@ class TranslationsMessagesEn {
|
||||
/// en: 'Error: ${error}'
|
||||
String errorLoading({required Object error}) => 'Error: ${error}';
|
||||
|
||||
/// en: 'The stream was interrupted. Press play or seek to retry.'
|
||||
String get streamInterrupted => 'The stream was interrupted. Press play or seek to retry.';
|
||||
|
||||
/// en: 'File information not available'
|
||||
String get fileInfoNotAvailable => 'File information not available';
|
||||
|
||||
@@ -5470,10 +5473,11 @@ extension on Translations {
|
||||
'messages.autoRemovedWatchedDownload' => ({required Object title}) => 'Auto-removed: ${title}',
|
||||
'messages.removedFromContinueWatching' => 'Removed from Continue Watching',
|
||||
'messages.errorLoading' => ({required Object error}) => 'Error: ${error}',
|
||||
'messages.streamInterrupted' => 'The stream was interrupted. Press play or seek to retry.',
|
||||
'messages.fileInfoNotAvailable' => 'File information not available',
|
||||
'messages.errorLoadingFileInfo' => ({required Object error}) => 'Error loading file info: ${error}',
|
||||
_ => null,
|
||||
} ?? switch (path) {
|
||||
'messages.errorLoadingFileInfo' => ({required Object error}) => 'Error loading file info: ${error}',
|
||||
'messages.errorLoadingSeries' => 'Error loading series',
|
||||
'messages.musicNotSupported' => 'Music playback is not yet supported',
|
||||
'messages.noDescriptionAvailable' => 'No description available',
|
||||
@@ -5985,9 +5989,9 @@ extension on Translations {
|
||||
'downloads.tvShows' => 'TV Shows',
|
||||
'downloads.movies' => 'Movies',
|
||||
'downloads.music' => 'Music',
|
||||
'downloads.tracksQueued' => ({required Object count}) => '${count} tracks queued for download',
|
||||
_ => null,
|
||||
} ?? switch (path) {
|
||||
'downloads.tracksQueued' => ({required Object count}) => '${count} tracks queued for download',
|
||||
'downloads.noDownloads' => 'No downloads yet',
|
||||
'downloads.noDownloadsDescription' => 'Downloaded content will appear here for offline viewing',
|
||||
'downloads.downloadNow' => 'Download',
|
||||
|
||||
Reference in New Issue
Block a user