Flutter:是否可以延迟约 30 秒进行 RTSP(或 RTMP)流式传输,并允许用户像 Youtube Streaming 一样导航回来?

问题描述 投票:0回答:1

我正在开发一个 Flutter 应用程序;台球数字记分牌,想为其添加一些视频流功能。

我能够使用支持 RTSP 流媒体的 vlc 播放器包和 IP 摄像机进行直播,但问题是我希望它能播放 30 秒左右,因为球员在比赛后想检查球是否击中。另外,玩家可能想再次回放 30 秒前,以查看之前的情况。

所以基本上我想要实现的是带有播放功能的延迟流媒体,就像 Youtube 或 Twitch 的实时流媒体功能一样。这似乎不像我想象的那么容易,因为我必须同时录制和播放流媒体..

Flutter 中可用吗?或者如果是这样我应该如何搜索这个功能?这种流媒体有一个术语吗?我将不胜感激任何帮助.. 谢谢您的宝贵时间!

我尝试了 flutter_vlc_player 包,但仅在直播中成功。

我也在研究 ffmpeg,但我不确定它是否完全适用于 Flutter 中的此功能..

flutter video-streaming rtsp rtmp live-streaming
1个回答
0
投票

要实现这个场景,只需要对播放器做一些特殊的处理即可。更简单的解决方案是使用 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修改也是可以的。

© www.soinside.com 2019 - 2024. All rights reserved.