@@ -7,6 +7,7 @@ import 'package:iris/globals.dart' as globals;
77import 'package:iris/models/file.dart' ;
88import 'package:iris/models/player.dart' ;
99import 'package:iris/models/progress.dart' ;
10+ import 'package:iris/models/storages/storage.dart' ;
1011import 'package:iris/models/store/app_state.dart' ;
1112import 'package:iris/store/use_app_store.dart' ;
1213import 'package:iris/store/use_history_store.dart' ;
@@ -15,6 +16,7 @@ import 'package:iris/store/use_storage_store.dart';
1516import 'package:iris/utils/check_data_source_type.dart' ;
1617import 'package:iris/utils/logger.dart' ;
1718import 'package:iris/utils/platform.dart' ;
19+ import 'package:media_stream/media_stream.dart' ;
1820import 'package:saf_util/saf_util.dart' ;
1921import 'package:video_player/video_player.dart' ;
2022import 'package:wakelock_plus/wakelock_plus.dart' ;
@@ -60,6 +62,9 @@ FvpPlayer useFvpPlayer(BuildContext context) {
6062
6163 Future <void > init () async => initValue.value = true ;
6264
65+ MediaStream mediaStream = MediaStream ();
66+ final streamUrl = mediaStream.url;
67+
6368 final controllerFuture = useMemoized (() async {
6469 if (file == null ) return VideoPlayerController .networkUrl (Uri .parse ('' ));
6570 isInitializing.value = true ;
@@ -79,7 +84,9 @@ FvpPlayer useFvpPlayer(BuildContext context) {
7984 );
8085 default :
8186 return VideoPlayerController .networkUrl (
82- Uri .parse (file.uri),
87+ Uri .parse (file.storageType == StorageType .ftp
88+ ? '$streamUrl /${file .uri }'
89+ : file.uri),
8390 httpHeaders: auth != null ? {'authorization' : auth} : {},
8491 );
8592 }
@@ -167,17 +174,21 @@ FvpPlayer useFvpPlayer(BuildContext context) {
167174 } else if (externalSubtitle.value! < externalSubtitles.length) {
168175 bool isExists = true ;
169176
177+ final uri = file? .storageType == StorageType .ftp
178+ ? '$streamUrl /${externalSubtitles [currentExternalSubtitle ].uri }'
179+ : externalSubtitles[currentExternalSubtitle].uri;
180+
181+ logger ('External subtitle uri: $uri ' );
182+
170183 if (Platform .isAndroid &&
171184 externalSubtitles[currentExternalSubtitle]
172185 .uri
173186 .startsWith ('content://' )) {
174- isExists = await SafUtil ()
175- .exists (externalSubtitles[currentExternalSubtitle].uri, false );
187+ isExists = await SafUtil ().exists (uri, false );
176188 }
177189
178190 if (isExists) {
179- controller.setExternalSubtitle (
180- externalSubtitles[currentExternalSubtitle].uri);
191+ controller.setExternalSubtitle (uri);
181192 } else {
182193 externalSubtitle.value = null ;
183194 }
0 commit comments