From bd4e30e653b3dff013e3246f77b2112bcd5f4c9c Mon Sep 17 00:00:00 2001 From: edde746 <86283021+edde746@users.noreply.github.com> Date: Sun, 22 Mar 2026 15:34:49 +0100 Subject: [PATCH] fix: external subtitles on android mpv --- lib/screens/video_player_screen.dart | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/lib/screens/video_player_screen.dart b/lib/screens/video_player_screen.dart index b0113ab7..9674a61f 100644 --- a/lib/screens/video_player_screen.dart +++ b/lib/screens/video_player_screen.dart @@ -1077,15 +1077,15 @@ class VideoPlayerScreenState extends State with WidgetsBindin } final hasExternalSubs = result.externalSubtitles.isNotEmpty; - final isAndroid = Platform.isAndroid; + final isExoPlayer = player is PlayerAndroid; - // On Android, attach external subs at open time so ExoPlayer discovers + // ExoPlayer: attach external subs at open time so it discovers // them in a single prepare() — no media reload needed for selection. - // On other platforms (MPV), external subs are added after open via sub-add. + // MPV (all platforms including Android): external subs added after open via sub-add. await player!.open( Media(result.videoUrl!, start: resumePosition, headers: plexHeaders), - play: isAndroid || !hasExternalSubs, - externalSubtitles: isAndroid && hasExternalSubs ? result.externalSubtitles : null, + play: isExoPlayer || !hasExternalSubs, + externalSubtitles: isExoPlayer && hasExternalSubs ? result.externalSubtitles : null, ); // Apply subtitle styling to ExoPlayer native layer (CaptionStyleCompat + libass font scale) @@ -1197,9 +1197,9 @@ class VideoPlayerScreenState extends State with WidgetsBindin // Store external subtitles for re-use after backend fallback _trackManager!.cacheExternalSubtitles(result.externalSubtitles); - // Non-Android with external subs: add after open via sub-add (MPV), + // MPV with external subs: add after open via sub-add, // opened paused to avoid race condition (issue #226) - if (!Platform.isAndroid && result.externalSubtitles.isNotEmpty) { + if (player is! PlayerAndroid && result.externalSubtitles.isNotEmpty) { _hasFirstFrame.value = false; _trackManager!.waitingForExternalSubsTrackSelection = true;