如何使用video_player和Chewie正确地捕捉实时流中的最新位置?

时间:2020-06-23 08:57:00

标签: flutter flutter-video-player

例如,当用户开始观看流时,我将初始化播放器,并从实时流中的最新位置开始播放。如果用户随后暂停视频,则它们将比最新流位置晚x秒。我想添加功能以允许他们直接查找最新的实时位置。

我当前的方法是简单地重新初始化流...

_videoPlayerController1 = VideoPlayerController.network('theUrl/index.m3u8');
_chewieController = ChewieController(
  videoPlayerController: _videoPlayerController1,
      autoPlay: true,
      isLive: true,
      autoInitialize: true,
    );

但是,由于上面提到的两个库在很大程度上强调了在完成它们时需要调用dispose()的问题,所以我担心会在此处造成内存泄漏。这样可以吗?

在调用上述代码之前,我确实尝试过对它们都调用dispose()...

_videoPlayerController1.dispose();
_chewieController.dispose();

尽管这会导致以下错误:'处置VideoPlayerController后使用了它。在VideoPlayerController上调用dispose()后,将无法再使用它。'

我的方法是否会导致内存泄漏,是否有更好的方法来查找最新的实时流位置?

1 个答案:

答案 0 :(得分:0)

我知道了。跳转到直播中最新位置的最简单方法是致电:

_chewieController.seekTo(Duration(days: 30));

在后台,Chewie正在其videoController上调用seekTo方法,该文档记录如下:

////如果[moment]超出视频的整个范围,它将自动 ///并默默地夹紧。

因此,如果您不知道流的最新位置,则可以传入一个Duration值,该值比您期望的流的最新位置大得多(在此示例中为30天),VideoController将将其位置设置为最新的已知位置。