gpt4 book ai didi

c++ - RTCP/RTP 通讯问题

转载 作者:可可西里 更新时间:2023-11-01 16:46:41 30 4
gpt4 key购买 nike

不幸的是,我仍然坚持使用 RTP/RTCP 通信来正确访问我的 IP 摄像机。

我想做什么

相机有一个我想读取的内部缓冲区。所以我通过 RTSP 与相机通信并告诉它流式传输数据。当相机通过整个缓冲区时,流将停止。

到目前为止我有什么

  • 通过 RTSP 为 DESCRIBE 通信的 TCP 连接/SETUP/PLAY请求 ( RTSP ) 以启动流。此连接必须在相机传输数据时保持打开状态。
  • 我在其上接收通过 RTP(基于 UDP)发送的数据的端口 - 处理这与我无关,我什至完全无法访问它,为了完整起见,我只想提及它。
  • 接收 RTCP 的 UDP 套接字 Sender Reports/Source Descriptions .这很重要,因为我不知道流何时停止(如第 2 点所述,我不能只看流何时停止)。在这个 Socket 上,我一直读到 RTCP Sender Report Goodbye来了,这意味着流媒体已经结束。然后我可以关闭 TCP 套接字(来自 RTSP
    沟通)。

  • 出了什么问题

    它适用于 2MB 或 4MB 等小缓冲区大小。我收到了一些源描述,然后是 Goodbye .但在我的特定测试案例中,我想使用 16MB(这仍然不到相机容量的一半)。
    我收到了发件人报告,但在某些时候(总是在 8MB +/-300KB 左右),相机只是停止发送。

    值得注意的是,我可以毫无问题地通过 VLC 访问缓冲区。我什至查看了与我的应用程序中几乎完全相同的通信( RTSP 和 RTCP )……缺少的一件事我将在下面提到:

    可能的原因

    这是我需要您建议的部分。

    可能性:缺乏接收者报告

    当通过 VLC 流式传输时,我注意到有一些 RTCP Receiver Reports从 VLC 发送到相机(像 Sender Reports 一样循环)。那么会不会是摄像机期望至少有一个 Receiver Report在特定时间(或发送特定数量的字节后)?
    目前我想不出任何其他原因。

    解决方案?
  • 如果我们假设相机停止流式传输,因为没有 Receiver Reports我想知道是否有一种方法可以在不携带太多信息的情况下实现它们。我已经阅读了一些 RFC 3550我想这些报告消息背后还有一堆逻辑。现在我实际上不需要,所以我也不想在这里实现一个完整的 RTCP 协议(protocol)。发一些就够了吗Receiver Report虚拟帧让相机继续播放?如果是这样,它们看起来如何?
  • 如果不是与缺少Receiver Reports有关而我只是不需要它们,那么相机停止流式传输的原因可能是什么?有什么建议?

  • 编辑:

    好吧,我刚刚设法创建了某种虚拟 Receiver Report它似乎有效(我只能收到 12MB 然后我得到了想要的再见)

    我刚刚填充了一个 28Byte 缓冲区,并在 Header 字段中使用了一些值,意思是:
    buffer[0] = 0x80;   // Version 2 , Padding = false, Reception Count = 0
    buffer[1] = 0xC9; // Packet Type 201 Receiver Report
    buffer[2] = 0x00; // Higher byte for total length
    buffer[3] = 0x06; // Lower byte for total length ( in 32 Bit words -> 28 Byte )

    缓冲区的其余部分我只是用零填充。是的,我知道这只是一个黑客,你不应该告诉你的 child 这样编程。

    现在我的问题有所改变:这个黑客可以吗?它似乎有效,但我仍然有点担心我的相机会使用这些虚拟数据并更改配置,因为它会在其中插入一些奇怪的东西?

    最佳答案

    您应该自己从流中读取数据。这样你就可以给出真实的接收者报告而不是虚假的报告。

    如果您需要将它转发到另一个应用程序或库的另一个端口,您可以简单地这样做。

    关于c++ - RTCP/RTP 通讯问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9417687/

    30 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com