![使用 socat 在实时直播流中实现无延迟和高 fps 的端口转发](https://linux22.com/image/136548/%E4%BD%BF%E7%94%A8%20socat%20%E5%9C%A8%E5%AE%9E%E6%97%B6%E7%9B%B4%E6%92%AD%E6%B5%81%E4%B8%AD%E5%AE%9E%E7%8E%B0%E6%97%A0%E5%BB%B6%E8%BF%9F%E5%92%8C%E9%AB%98%20fps%20%E7%9A%84%E7%AB%AF%E5%8F%A3%E8%BD%AC%E5%8F%91.png)
我正在使用该命令socat
从实时直播流端口转发连接。
TCP4-LISTEN:8080 TCP4:123.456.789.12:80
问题是它增加了延迟和低 fps,而没有端口转发的实时流可以完美地工作,没有延迟和高 fps。
- 这可能是什么原因造成的?
- 有没有办法修复此配置
socat
或者我应该使用其他方法?
答案1
我不是这方面的专家socat
,但是在快速查看它的名称(SOcket CAT)之后,它似乎通过打开两个套接字并在用户空间中操作它们来实现。
正如 slm 所建议的,为什么不通过来配置它iptables
?
Iptables 是一个配置 netfilter 的用户空间应用程序。 Netfilter 代码嵌入在内核中。它可能会带来更好的性能,因为转发的数据包不需要从内核空间传递到用户空间,反之亦然。
资源
答案2
在防火墙中:
$ sudo firewall-cmd --zone=public --add-masquerade
$ sudo firewall-cmd --zone="public" \
--add-forward-port=port=8080:proto=tcp:toport=80:toaddr=123.123.123.123
请iptables
参阅此 SF 问答,标题为:如何在同一网络中将端口从一个IP转发到另一个IP?。