首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在LibVLCSharp中使用Xamarin.Forms使RTSP流的存活时间超过60岁?

如何在LibVLCSharp中使用Xamarin.Forms使RTSP流的存活时间超过60岁?
EN

Stack Overflow用户
提问于 2019-01-11 09:24:00
回答 2查看 3.5K关注 0票数 0

我正在Xamarin.Forms应用程序中实现一个RTSP播放器。在停止流之前,视频在VideoView中播放60秒。根据Videolan命令行帮助,默认的rtsp超时是60秒。我无法使用提供的各种选项格式覆盖此选项。

我已经尝试在LibVLC构造函数中和通过媒体的AddOptions方法使用-和:前缀添加以下选项,但都没有结果:-rtsp-tcp-rtsp-timeout=300-rtsp流-超时值=300-sout-保持

下面的用法示例:

代码语言:javascript
复制
readonly LibVLC _libvlc;
public VideoPage()
{
    InitializeComponent();
    Core.Initialize();
    _libvlc = new LibVLC(new string[] { "--rtsp-timeout=300" });
    ShowVideo();
}

private void ShowVideo()
{
    var stream = "rtsp://1.2.3.4:1234/MyStream";
    using (var media = new Media(_libvlc, stream, Media.FromType.FromLocation))
    {
        var config = new MediaConfiguration();
        config.EnableHardwareDecoding();
        media.AddOption(":rtsp-timeout=300");
        media.AddOption(config);
        VideoView0.MediaPlayer = new MediaPlayer(_libvlc);
        VideoView0.MediaPlayer.Play(media);
    }
}

我预计流将保持打开,视频将在给定的超时时间内继续播放,但在60秒后停止。如能提供任何帮助,将不胜感激!

编辑

服务器似乎有60秒的超时时间。我无法控制这一点,所以解决方案需要来自客户端。如何发送一个备存/RR数据包,通知服务器保持连接处于打开状态?

EN

回答 2

Stack Overflow用户

发布于 2019-01-15 07:21:27

RTSP一般基于TCP协议,RTP基于UDP协议。因此,理想情况下,这两个通道都需要保持活动功能。

如果服务器设置了在安装程序响应中收到的超时值。

代码语言:javascript
复制
Session = "Session" ":" session-id [ ";" "timeout" "=" delta-seconds ]

想要保持与RTSP服务器的连接,

客户端还需要定期发送任何RTSP请求(选项、SET_PARAMETER或GET_PARAMETER),然后在安装程序响应中接收timeout值。

这是细部讨论关于这件事。

票数 0
EN

Stack Overflow用户

发布于 2021-04-20 20:39:40

我在书签上写了一个问题很长一段时间了,再也没花时间跟你联系(而且是最诚实的,完全忘记了这个问题的存在)。今天,有人问了我这个问题。这实际上是来自libvlc的一个bug,刚刚在这里报告过:https://code.videolan.org/videolan/vlc/-/issues/25662

我很想知道你们相机的牌子。

临时的解决办法是用更大的超时重新构建自己的libvlc版本(修补程序包含在bug报告中)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54143570

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档