【问题标题】:Is it possible to compress the rtmp vedio streaming on the transit nodes of a networking?是否可以在网络的传输节点上压缩 rtmp 视频流?
【发布时间】:2024-04-28 12:35:02
【问题描述】:
我想用这样的网络做一些实验室工作:
我想将 rtmp 视频流数据包从“服务器”节点传输到“客户端”节点。 rtmp数据包将通过node1或node2或node3在服务器节点和客户端节点之间传输。
是否可以在 node1/node2/node3 上压缩 rtmp 视频流?如果可能,怎么做?我是否必须在 node1/node2/node3 上捕获 rtmp 数据包,然后对其进行压缩,然后将数据包从 node1/node2/node3 重新发送到客户端?我可以只在网络的较低层(网络层/数据链路层)进行压缩工作吗?
我真的很好奇这个。如果有人可以提供帮助,我将不胜感激!
【问题讨论】:
标签:
tcp
video-streaming
rtmp
sdn
openflow
【解决方案1】:
服务器网络的方法,一般尝试解决:
- 容量:扩展系统容量,例如为 10 万个客户提供服务。
- 质量:对于正态分布的客户端,无论客户端数量如何,都尽可能地向客户端提供流。例如,您有 10 个客户需要服务,但他们完全不同的省份甚至国家。
对于Quality,像nginx这样的反向代理效果很好,像这样;
client ---<--RTMP--- Nginx ----<--RTMP--- Server
请注意,Proxy 永远不会增加系统容量,最大客户端数受 Server 限制。所以如果你想增加容量,一般它也能像proxy一样播放,但比proxy多,请使用媒体集群,比如Edge of SRS:
1k client -<--RTMP--- SRS(Edge) --<--RTMP---+- SRS Origin Server
... |
1k client -<--RTMP--- SRS(Edge) --<--RTMP--+
... |
1k client -<--RTMP--- SRS(Edge) --<--RTMP--+
每台Origin Server可以服务约1k个SRS Edge server,每台Edge Server服务约1k~3k个客户端。
【解决方案2】:
您可以使用 ffmpeg 保持两个 tcp 连接而不是使用一个 rtmp 连接。