FFMPEG 命令将视频流式传输到多播地址

FFMPEG 命令将视频流式传输到多播地址

我需要将视频流式传输到多播地址。我听说使用 FFMPEG 可以流式传输内容。我使用以下命令将视频流式传输到多播地址

ffmpeg.exe -i input -vcodec copy -acodec copy -f mpegts -re "udp://239.101.101.1:1234?ttl=1&pkt_size=1316".

但我无法从另一个系统在 vlc 或 ffmpeg 中观看视频。我需要从另一台机器查看内容。我犯了什么错误...请帮我解决这个问题。

答案1

首先您应该验证 UDP 数据包是否到达您的播放器系统。

播放器系统是否可从发射器系统直接访问?如果没有通过将 UDP 端口 1234 添加到转发列表而专门转发到正确的机器,则 UDP 数据包将被 NAT 路由器阻止。

接下来,您可以通过监听 UDP 端口来验证播放器机器是否接收数据包(假设您的物理接口是 eth0,如果不是,请使用您的系统使用的接口。)

sudo tcpdump -i eth0 dst 端口 1234

如果数据包接收成功,则尝试从播放器软件读取日志,检查是否可以识别解码问题。

答案2

全部组播地址范围来自224.0.0.0239.255.255.255 运行 FFmpeg 命令后,转到同一网络中的任意 PC 中使用此命令甚高频液晶

udp://@[IP]:[port]

答案3

  • '-re' 标志适用于输入而不是输出,您的命令将无法按列出的方式工作。

  • 您将 ttl 设置为 1,这将在第一个路由器处停止您,将其提升并查看会发生什么。

这是我所知道的最简单的方法。

    ffmpeg -i Plan_9_from_Outer_Space_1959.mp4 -c copy -f mpegts  'udp://239.0.0.1:1234?ttl=13'

使用 mplayer 播放。

    mplayer udp://239.0.0.1:1234

答案4

在视频服务器主机上:

ffmpeg -re -i test.mp4 -f mpegts  'udp://239.1.2.3:4567?ttl=8'

ffmpeg 将把视频文件 test.mp4 传输到多播(由于有标志,因此输出速率正确-re)。输出将通过 UDP 端口 4567 流式传输到多播地址 239.1.2.3。由于 TTL 设置为 8,因此多播流最多可以穿越 8 个路由器。

然后,在视频客户端主机上:

ffplay udp://239.1.2.3:4567

客户端主机将播放在多播流上收到的视频。请注意,可以在传输流之前启动 ffplay。但使用 mplayer,您必须先设置 ffmpeg 传输运行,然后再启动 mplayer:

mplayer udp://239.1.2.3:4567

如果您尝试首先启动 mplayer,它将失败并显示以下信息:

Timeout! No data from host 239.1.2.3
udp_streaming_start failed
No stream found to handle url udp://239.1.2.3:4567

相关内容