fix(playback): prevent native subtitle autoselect

This commit is contained in:
edde746
2026-05-30 00:05:29 +02:00
parent a71711de5f
commit 1685ecc991
9 changed files with 175 additions and 11 deletions
+17 -2
View File
@@ -70,8 +70,23 @@ sealed class SubtitleTrack with _$SubtitleTrack {
String? uri,
}) = _SubtitleTrack;
factory SubtitleTrack.uri(String uri, {String? title, String? language}) =>
SubtitleTrack(id: 'external:$uri', title: title, language: language, isExternal: true, uri: uri);
factory SubtitleTrack.uri(
String uri, {
String? title,
String? language,
String? codec,
bool isDefault = false,
bool isForced = false,
}) => SubtitleTrack(
id: 'external:$uri',
title: title,
language: language,
codec: codec,
isDefault: isDefault,
isForced: isForced,
isExternal: true,
uri: uri,
);
static const auto = SubtitleTrack(id: 'auto', title: 'Auto');
+10 -1
View File
@@ -120,7 +120,16 @@ class PlayerAndroid extends PlayerBase {
if (externalSubtitles != null && externalSubtitles.isNotEmpty)
'externalSubtitles': externalSubtitles
.where((s) => s.uri != null)
.map((s) => {'uri': s.uri, 'title': s.title, 'language': s.language})
.map(
(s) => {
'uri': s.uri,
'title': s.title,
'language': s.language,
'codec': s.codec,
'isDefault': s.isDefault,
'isForced': s.isForced,
},
)
.toList(),
});
}
+5
View File
@@ -180,6 +180,11 @@ class PlayerNative extends PlayerBase {
await setProperty('pause', 'yes');
}
// Prevent mpv's own default subtitle selection from racing the
// server-backed TrackManager decision applied after tracks are discovered.
await setProperty('sid', 'no');
await setProperty('secondary-sid', 'no');
// Convert content:// URIs to fdclose:// for MPV on Android (SAF SD card downloads)
var uri = media.uri;
if (Platform.isAndroid && uri.startsWith('content://')) {