如何使用 video_player 和 Chewie 正确赶上直播中的最新位置?
How to correctly catch up to the latest position in a live stream using video_player and Chewie?
比如当用户开始看直播时,我会初始化播放器,从直播的最新位置开始播放。如果用户然后暂停视频,他们将落后于最新的流位置 x 秒。我想添加功能让他们直接搜索最新的实时位置。
我目前的做法是简单地重新初始化流...
_videoPlayerController1 = VideoPlayerController.network('theUrl/index.m3u8');
_chewieController = ChewieController(
videoPlayerController: _videoPlayerController1,
autoPlay: true,
isLive: true,
autoInitialize: true,
);
但是,由于上述两个库都非常强调在完成它们时调用 dispose() 的必要性,我担心这里会造成内存泄漏。这种做法可以吗?
我确实在调用上面的代码之前尝试对它们调用 dispose()...
_videoPlayerController1.dispose();
_chewieController.dispose();
尽管这导致了以下错误'A VideoPlayerController was used after being disposed. Once you have called dispose() on a VideoPlayerController, it can no longer be used.'
我的方法是否会导致内存泄漏,是否有更好的方法来查找最新的直播位置?
我明白了。最简单的跳转到直播流中最新位置的方法是调用:
_chewieController.seekTo(Duration(days: 30));
在幕后,Chewie 正在其 videoController 上调用 seekTo 方法,记录如下:
/// 如果 [moment] 超出视频的全部范围,它将自动
/// 并默默地夹紧。
因此,如果您不知道流的最新位置,那么您可以传入一个 Duration 值,该值比您期望的流的最新位置(在此示例中为 30 天)大得多,并且VideoController 会将其位置设置为其最新的已知位置。
比如当用户开始看直播时,我会初始化播放器,从直播的最新位置开始播放。如果用户然后暂停视频,他们将落后于最新的流位置 x 秒。我想添加功能让他们直接搜索最新的实时位置。
我目前的做法是简单地重新初始化流...
_videoPlayerController1 = VideoPlayerController.network('theUrl/index.m3u8');
_chewieController = ChewieController(
videoPlayerController: _videoPlayerController1,
autoPlay: true,
isLive: true,
autoInitialize: true,
);
但是,由于上述两个库都非常强调在完成它们时调用 dispose() 的必要性,我担心这里会造成内存泄漏。这种做法可以吗?
我确实在调用上面的代码之前尝试对它们调用 dispose()...
_videoPlayerController1.dispose();
_chewieController.dispose();
尽管这导致了以下错误'A VideoPlayerController was used after being disposed. Once you have called dispose() on a VideoPlayerController, it can no longer be used.'
我的方法是否会导致内存泄漏,是否有更好的方法来查找最新的直播位置?
我明白了。最简单的跳转到直播流中最新位置的方法是调用:
_chewieController.seekTo(Duration(days: 30));
在幕后,Chewie 正在其 videoController 上调用 seekTo 方法,记录如下:
/// 如果 [moment] 超出视频的全部范围,它将自动 /// 并默默地夹紧。
因此,如果您不知道流的最新位置,那么您可以传入一个 Duration 值,该值比您期望的流的最新位置(在此示例中为 30 天)大得多,并且VideoController 会将其位置设置为其最新的已知位置。