fix(playback): prevent native subtitle autoselect
This commit is contained in:
+17
-2
@@ -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');
|
||||
|
||||
|
||||
@@ -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(),
|
||||
});
|
||||
}
|
||||
|
||||
@@ -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://')) {
|
||||
|
||||
Reference in New Issue
Block a user