2

我想实时获取正在播放的视频的当前位置。我正在考虑使用监听器,但如果我这样做:

_controller.addListener(() => print(_controller.value.position.inMilliseconds))

它仅每 500 毫秒打印一次该值。这太慢了,视频每 33 毫秒更新一次,甚至更频繁。任何人都知道为什么会发生这种情况以及实现我想要的正确方法是什么?

PS 我可以通过在视频开始时启动 AnimationController 来实现我想要的,但这似乎是一个 hack。

4

1 回答 1

3

延迟的原因是VideoPlayerController每 500 毫秒通知侦听器。您可以使用 aTimer定期获取视频播放器的位置。这是一个示例代码

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();
  }
}
于 2020-08-08T15:09:23.190 回答