我正在开发一个 Flutter 应用程序;台球数字记分牌,想为其添加一些视频流功能。
我能够使用支持 RTSP 流媒体的 vlc 播放器包和 IP 摄像机进行直播,但问题是我希望它能播放 30 秒左右,因为球员在比赛后想检查球是否击中。另外,玩家可能想再次回放 30 秒前,以查看之前的情况。
所以基本上我想要实现的是带有播放功能的延迟流媒体,就像 Youtube 或 Twitch 的实时流媒体功能一样。这似乎不像我想象的那么容易,因为我必须同时录制和播放流媒体..
Flutter 中可用吗?或者如果是这样我应该如何搜索这个功能?这种流媒体有一个术语吗?我将不胜感激任何帮助.. 谢谢您的宝贵时间!
我尝试了 flutter_vlc_player 包,但仅在直播中成功。
我也在研究 ffmpeg,但我不确定它是否完全适用于 Flutter 中的此功能..
要实现这个场景,只需要对播放器做一些特殊的处理即可。更简单的解决方案是使用 HLS 协议,因为它基于分段文件,您可以将每个分段的持续时间设置为 30 秒。
假设您使用的是SRS,请参考SRS HLS,配置如下:
vhost __defaultVhost__ {
hls {
enabled on;
hls_fragment 30;
hls_window 180;
}
}
生成的HLS文件可能是这样的:
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-MEDIA-SEQUENCE:0
#EXT-X-TARGETDURATION:32
#EXT-X-DISCONTINUITY
#EXTINF:30.240, no desc
livestream-0.ts
#EXTINF:30.600, no desc
livestream-1.ts
#EXTINF:31.400, no desc
这样,播放器在播放时,会得到30秒的片段,只需要在播放器当前片段内允许拖动即可。当然,你可能需要找到一个可以实现这个功能的播放器,或者基于hls.js修改也是可以的。