使用ffmpeg将广播重定向到多播

时间:2018-12-13 21:11:30

标签: ffmpeg ip broadcast multicast

有人对此有经验吗,或者有人知道它是否可以做到吗?我知道我可以将保存的视频文件流式传输到UDP IP地址,并且我知道可以获取视频流并将其保存到我的linux机器上,但是我如何同时执行两个操作呢?

我可以编写一个脚本来保存即将播放的广播中的视频,然后将其多播到我需要的任何UDP IP,但是我无法承受两次提要之间的任何延迟,最多只能延迟几秒钟。有什么方法可以同时执行吗?

1 个答案:

答案 0 :(得分:0)

您可以编写一个带有循环的简单程序,该循环开始等待UDP数据包并将其内容发送到多播目标(或使用类似socat的工具)。

请注意,TTL在单播和多播数据包中的含义不同,因此必须根据多播阈值规则设置TTL:

  • 0:仅限于同一主机。不会通过任何界面输出。
  • 1:仅限于同一子网。不会被路由器转发。
  • <32:仅限于同一站点,组织或部门。
  • <64:仅限于同一地区。
  • <128:仅限于同一大陆。
  • <= 255:不受限制的范围。全球。

您没有指定要使用的编程语言,但是请注意,大多数编程语言都提供了套接字接口,因此您可以使用它来对循环进行编程。

例如,对于Java,您将使用java.net.MulticastSocket实例而不是java.net.DatagramSocket实例,因为只有MulticastSocket允许您使用public void setTimeToLive(int ttl)设置TTL。 DatagramSocket不存在这种方法。

无论如何,无需编程,您可以通过以下方式使用 socat 命令行工具:

我们假设您正在侦听端口1234,并希望将数据流发送到同一端口上的多播目标224.0.2.3:

% socat UDP4-RECV:1234 UDP-SENDTO:224.0.2.3:1234,ip-multicast-ttl=128