You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PtP(点对点)网络环境下RTSP流播放异常问题求助

问题:PtP网络下高延迟RTSP流播放异常

我的应用在PtP(点对点)网络环境下运行时,部分RTSP流播放异常,另一部分正常。排查后发现,正常流对应摄像头ping值约5ms,异常流对应摄像头ping值40ms以上,推测问题和高网络延迟相关,但未找到有效配置方案。

当前C#实现代码

public void ShowCamera()
{
    string options = string.Empty;
    if (string.IsNullOrWhiteSpace(room.resolution) || room.resolution == "<unset>")
    {
        options = "?compression=30&fps=30&videocodec=h265";
    }
    else
    {
        var res = Regex.Replace(room.resolution, @"\(.*\)", "").Trim();
        options = $"?resolution={res}&compression=30&fps=30&videocodec=h265";
    }

    outside_media = new Media(libvlc, "rtsp://root:root@" + room.outsideCamera + "/axis-media/media.amp"+options, FromType.FromLocation);
    outside_media.AddOption(":no-sout-rtp-sap" +
                        ":no-sout-standard-sap" +
                        ":sout-all" +
                        ":sout-keep" +
                        ":network-caching=150" +
                        ":--file-caching=2000" +
                        "rtsp-caching=200");

    inside_media = new Media(libvlc, "rtsp://root:root@" + room.insideCamera + "/axis-media/media.amp"+options, FromType.FromLocation);
    inside_media.AddOption(":no-sout-rtp-sap" +
                        ":no-sout-standard-sap" +
                        ":sout-all" +
                        ":sout-keep" +
                        ":network-caching=150" +
                        ":--file-caching=2000" +
                        "rtsp-caching=200");
}

对比无问题的旧版Java代码

mediaPlayer.playMedia("rtsp://root:root@"
                    + cameraIp + "/axis-media/media.amp" + options, ":no-sout-rtp-sap",
                    ":no-sout-standard-sap",
                    ":sout-all",
                    ":sout-keep",
                    "rtsp-caching=200");

已尝试的无效措施

  • 添加network-caching和file-caching配置
  • 将编码从H264改为H265

可行优化方案

  1. 修正参数解析格式
    C#代码中把所有参数拼接成单个字符串传递,容易导致LibVLC解析错误,且rtsp-caching=200缺少前置冒号、--file-caching格式不符合LibVLC参数规范。应改为逐个添加参数:

    outside_media.AddOption(":no-sout-rtp-sap");
    outside_media.AddOption(":no-sout-standard-sap");
    outside_media.AddOption(":sout-all");
    outside_media.AddOption(":sout-keep");
    outside_media.AddOption(":network-caching=500");
    outside_media.AddOption(":file-caching=2000");
    outside_media.AddOption(":rtsp-caching=500");
    
  2. 提高缓存值适配高延迟
    40ms以上的网络延迟,150ms的缓存不足以抵消波动,建议将network-caching和rtsp-caching同步提高到500ms~1000ms,给播放器足够缓冲空间。

  3. 强制RTSP TCP传输
    UDP在高延迟环境下易丢包,添加参数强制使用TCP模式,提升流稳定性:

    outside_media.AddOption(":rtsp-transport=tcp");
    
  4. 移除冗余输出参数
    如果无需流媒体转发,可移除sout-all和sout-keep参数,减少不必要的资源开销。

内容的提问来源于stack exchange,提问作者YvesT

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 07:33:17