自适应比特率流协议适用于任何数据

问题描述

我正在寻找有关流协议(类似于视频/音频流)的一些想法/提示,以实时发送任何数据。

简单来说:

  • 我每秒生成一些数据(假设一个数组每秒有 1MB 的数据)并且我正在将这些数据从最重要到不那么重要(例如将它们放入优先级队列或类似队列)
  • 我想通过某种协议继续流式传输这些数据,在完美的情况下,我想发送所有数据
  • 如果不可能(带宽、丢包等),我想尽可能多地从每个生成的数组(前 n 字节)发送数据,以保持数据继续运行(开始每秒发送新生成的数组很重要) ).

现在 - 我正在寻找这样的协议/库来处理任何数据的自适应比特率内容。我希望它告诉我我可以发送多少数据(放入发送缓冲区或类似的方法)。最相似的是视频/音频流,当网络条件不佳时(编码器)根据网络条件改变质量。 如果我错过了一些发送数据也没关系(所以 UDP 深入这些东西是可以的)但最好我希望每秒发送尽可能多的数据而不会丢失任何东西(从那些第一个 n 字节发送)。>

您对我可以用于客户端/服务器的协议/库有什么想法吗? (希望有一些 Python、C 或 C++ 中的库)。

解决方法

我认为 IPFIX(通用 NetFlow 标准)拥有您需要的一切。

您可以通过在每次更改速率时发送 samplingInterval 更新来避免每个样本的时间戳。您还可以在采样中添加其他异步更新的变化。

至于将数据放在哪里。您可以创建一个新字段或仅使用具有所需数据类型的现有字段。 IE:如果您只是发送 uint64 示例值,那么使用 packetDeltaCount 然后创建您自己的字段定义可能更容易。

有很多 IPFIX libraries