Flutter - video_player 侦听器被调用的速度非常慢
Flutter - video_player listener being called very slowly
我想实时获取正在播放的视频的当前位置。我正在考虑使用监听器,但如果我这样做:
_controller.addListener(() => print(_controller.value.position.inMilliseconds))
它每 500 毫秒只打印一次值。这太慢了,视频每 33 毫秒甚至更频繁地更新一次。任何人都知道为什么会发生这种情况以及实现我想要的正确方法是什么?
P.S。我能够通过在视频开始时启动 AnimationController 来实现我想要的效果,但这似乎是一种 hack。
延迟的原因是 VideoPlayerController
每 500 毫秒通知一次侦听器。您可以使用 Timer
定期获取视频播放器的位置。这是执行此操作的示例代码
class VideoPlayerScreen extends StatefulWidget {
@override
VideoPlayerState createState() => VideoPlayerState();
}
class VideoPlayerState extends State<VideoPlayerScreen> {
Timer _timer;
VideoPlayerController videoPlayerController;
void startTimer() {
_timer = Timer.periodic(const Duration(milliseconds: 100), (Timer timer) async {
print(await videoPlayerController.position);
});
}
@override
void dispose() {
_timer?.cancel();
videoPlayerController?.dispose();
super.dispose();
}
}
我想实时获取正在播放的视频的当前位置。我正在考虑使用监听器,但如果我这样做:
_controller.addListener(() => print(_controller.value.position.inMilliseconds))
它每 500 毫秒只打印一次值。这太慢了,视频每 33 毫秒甚至更频繁地更新一次。任何人都知道为什么会发生这种情况以及实现我想要的正确方法是什么?
P.S。我能够通过在视频开始时启动 AnimationController 来实现我想要的效果,但这似乎是一种 hack。
延迟的原因是 VideoPlayerController
每 500 毫秒通知一次侦听器。您可以使用 Timer
定期获取视频播放器的位置。这是执行此操作的示例代码
class VideoPlayerScreen extends StatefulWidget {
@override
VideoPlayerState createState() => VideoPlayerState();
}
class VideoPlayerState extends State<VideoPlayerScreen> {
Timer _timer;
VideoPlayerController videoPlayerController;
void startTimer() {
_timer = Timer.periodic(const Duration(milliseconds: 100), (Timer timer) async {
print(await videoPlayerController.position);
});
}
@override
void dispose() {
_timer?.cancel();
videoPlayerController?.dispose();
super.dispose();
}
}