video: fixed subtitle remaining after deselecting track

This commit is contained in:
Thibault Deckers 2021-07-03 11:03:40 +09:00
parent de573fa629
commit 6795717fe1

View file

@ -20,6 +20,7 @@ class IjkPlayerAvesVideoController extends AvesVideoController {
late FijkPlayer _instance; late FijkPlayer _instance;
final List<StreamSubscription> _subscriptions = []; final List<StreamSubscription> _subscriptions = [];
final StreamController<FijkValue> _valueStreamController = StreamController.broadcast(); final StreamController<FijkValue> _valueStreamController = StreamController.broadcast();
final StreamController<String?> _timedTextStreamController = StreamController.broadcast();
final AChangeNotifier _completedNotifier = AChangeNotifier(); final AChangeNotifier _completedNotifier = AChangeNotifier();
Offset _macroBlockCrop = Offset.zero; Offset _macroBlockCrop = Offset.zero;
final List<StreamSummary> _streams = []; final List<StreamSummary> _streams = [];
@ -66,7 +67,6 @@ class IjkPlayerAvesVideoController extends AvesVideoController {
(value) => canSetSpeedNotifier.value = true, (value) => canSetSpeedNotifier.value = true,
onError: (error) {}, onError: (error) {},
); );
_startListening(); _startListening();
} }
@ -75,12 +75,14 @@ class IjkPlayerAvesVideoController extends AvesVideoController {
_initialPlayTimer?.cancel(); _initialPlayTimer?.cancel();
_stopListening(); _stopListening();
await _valueStreamController.close(); await _valueStreamController.close();
await _timedTextStreamController.close();
await _instance.release(); await _instance.release();
} }
void _startListening() { void _startListening() {
_instance.addListener(_onValueChanged); _instance.addListener(_onValueChanged);
_subscriptions.add(_valueStream.where((value) => value.state == FijkState.completed).listen((_) => _completedNotifier.notifyListeners())); _subscriptions.add(_valueStream.where((value) => value.state == FijkState.completed).listen((_) => _completedNotifier.notifyListeners()));
_subscriptions.add(_instance.onTimedText.listen(_timedTextStreamController.add));
} }
void _stopListening() { void _stopListening() {
@ -295,7 +297,7 @@ class IjkPlayerAvesVideoController extends AvesVideoController {
Stream<int> get positionStream => _instance.onCurrentPosUpdate.map((pos) => pos.inMilliseconds); Stream<int> get positionStream => _instance.onCurrentPosUpdate.map((pos) => pos.inMilliseconds);
@override @override
Stream<String?> get timedTextStream => _instance.onTimedText; Stream<String?> get timedTextStream => _timedTextStreamController.stream;
@override @override
double get speed => _speed; double get speed => _speed;
@ -327,6 +329,9 @@ class IjkPlayerAvesVideoController extends AvesVideoController {
} else if (current != null) { } else if (current != null) {
await _instance.deselectTrack(current.index!); await _instance.deselectTrack(current.index!);
} }
if (type == StreamType.text) {
_timedTextStreamController.add(null);
}
await seekTo(currentPosition); await seekTo(currentPosition);
} }
} }