如果UDP(RTP)数据包已转发,VLC不会播放RTP视频流

如果UDP(RTP)数据包已转发,VLC不会播放RTP视频流,udp,vlc,rtp,forwarding,Udp,Vlc,Rtp,Forwarding,我什么都试过了,但都失败了。它是最有线的。我的情况是这样的: rtsp流媒体服务器。(服务器A) 转发服务器(服务器B) PJNATH库和RTP.NET库 最终客户(客户C) A、 B和C在同一局域网内 B通过发送RSTP请求从A请求RTP流,并获取流。B上的VLC能够通过SDP文件播放流。现在,在C上播放相同的流: 将成功通过B上的RTP.NET lib接收来自A的流(通过让RTP.NET侦听本地主机上的UDP端口),并将其转发(通过设置RTP.NET目的地)到C 如果在B和C之间使用PJNA

我什么都试过了,但都失败了。它是最有线的。我的情况是这样的:

  • rtsp流媒体服务器。(服务器A)
  • 转发服务器(服务器B)
  • PJNATH库和RTP.NET库
  • 最终客户(客户C)
  • A、 B和C在同一局域网内

    B通过发送RSTP请求从A请求RTP流,并获取流。B上的VLC能够通过SDP文件播放流。现在,在C上播放相同的流:

  • 成功通过B上的RTP.NET lib接收来自A的流(通过让RTP.NET侦听本地主机上的UDP端口),并将其转发(通过设置RTP.NET目的地)到C

  • 如果在B和C之间使用PJNATH,将失败(C将从PJNATH recvdata回调发送接收到的UDP数据包到VLC,而不修改任何位)。通过嗅探wireshark的数据包,我确信以下事实:

    • PJNATH标识B和C位于同一LAN中,并将数据直接从B发送到C

    • 随机选取的UDP数据包显示A->B的内容与C->(C上的VLC)的内容完全相同。此内容可以在B上播放,但不能在具有相同版本VLC的C上播放

    • C上的VLC能够接收数据,但不显示任何内容。日志停留在“解码器缓冲在0毫秒内完成”

  • 我的目标是通过PJNATH将流从B转发到C,使VLC在C上播放流

    在这个问题上我几乎要发疯了。 我不明白为什么B上的VLC和C上的VLC读取相同的SDP(除了要侦听的UDP端口之外都是相同的),接收相同的UDP数据,但行为不同

    main debug: Buffering 80%
    main debug: Buffering 83%
    main debug: Buffering 86%
    main debug: Buffering 91%
    main debug: Buffering 95%
    main debug: Stream buffering done (1002 ms in 1195 ms)
    main debug: Decoder buffering done in 0 ms
    (nothing more...)