是否可以在网络的传输节点上压缩 rtmp 视频流?

Is it possible to compress the rtmp vedio streaming on the transit nodes of a networking?

我想使用这样的网络做一些实验室工作:

我想将rtmp 视频流数据包从“服务器”节点传输到“客户端”节点。服务器节点和客户端节点之间会通过node1或node2或node3传输rtmp包。

我可以压缩 node1/node2/node3 上的 rtmp 视频流吗?如果可能的话,怎么做?我是否必须捕获一个 node1/node2/node3 的 rtmp 数据包,然后压缩它们,然后将数据包从 node1/node2/node3 重新发送到客户端?我可以只在网络的较低层(网络层/数据-link 层)进行压缩工作吗?

我对此很好奇。如果有人能提供帮助,我将不胜感激!!

服务器网络的方法,一般尝试解决:

  • 容量:扩展系统的容量,例如,为 10 万个客户端提供服务。
  • 质量:尽可能将流传送到客户端,对于正常分布的客户端,无论客户端数量是多少。比如你有10个客户要服务,但是他们在不同的省份甚至不同的国家。

对于Quality,像nginx这样的反向代理效果很好,像这样;

client ---<--RTMP---   Nginx ----<--RTMP--- Server 

请注意,代理永远不会增加系统容量,最大客户端数受服务器限制。所以如果你想增加容量,一般也能播放像但不止一个proxy,请使用media cluster,像Edge of SRS:

1k client -<--RTMP--- SRS(Edge) --<--RTMP---+- SRS Origin Server
...                                         |
1k client  -<--RTMP--- SRS(Edge) --<--RTMP--+
...                                         |
1k client  -<--RTMP--- SRS(Edge) --<--RTMP--+

每个源服务器可以服务大约 1k SRS 边缘服务器,每个边缘服务器可以服务大约 1k~3k 客户端。

您可以使用 ffmpeg,它保持两个 tcp 连接,而不是使用一个 rtmp 连接。