例如,当用户开始观看流时,我将初始化播放器,并从实时流中的最新位置开始播放。如果用户随后暂停视频,则它们将比最新流位置晚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()后,将无法再使用它。'
我的方法是否会导致内存泄漏,是否有更好的方法来查找最新的实时流位置?
答案 0 :(得分:0)
我知道了。跳转到直播中最新位置的最简单方法是致电:
_chewieController.seekTo(Duration(days: 30));
在后台,Chewie正在其videoController上调用seekTo方法,该文档记录如下:
////如果[moment]超出视频的整个范围,它将自动 ///并默默地夹紧。
因此,如果您不知道流的最新位置,则可以传入一个Duration值,该值比您期望的流的最新位置大得多(在此示例中为30天),VideoController将将其位置设置为最新的已知位置。