我正在 Xamarin.Forms 应用程序中实现 RTSP 播放器。在视频流停止之前,视频会在 VideoView 中播放 60 秒。根据Videolan 命令行帮助,默认 rtsp 超时为 60 秒。我无法使用提供的各种选项格式来覆盖它。
我已经尝试在 LibVLC 构造函数和媒体的 AddOptions 方法中使用 --、- 和 : 前缀添加以下选项,但均无济于事: --rtsp-tcp --rtsp-timeout=300 --rtsp -stream-timeout=300 --sout-keep
下面的用法示例:
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 秒的超时时间。我无法控制它,所以解决方案需要来自客户端。我将如何发送通知服务器保持连接打开的 keepalive/RR 数据包?