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