使用 ffmpeg 通过 UDP 将视频流发送到本地网络上的 IP

使用 ffmpeg 通过 UDP 将视频流发送到本地网络上的 IP

我正在进行一个项目,最终希望有一台主机 (H) 能够执行大量繁重任务,还有一台客户端计算机 (C) 向 H 发送输入并接收 H 屏幕上的视频流。没有互联网,只有 LAN。

要求:

  1. 操作系统:Windows 10
  2. 费用:仅限免费软件
  3. 低延迟
  4. 最低 720p
  5. 至少 30fps

对于输入,我目前使用的是 Input Director。它运行完美,延迟甚至不明显。

视频有点难。我尝试过使用 MonaServer 转发 rtmp 在本地进行 OBS 流式传输,但延迟大约为 3 秒,根本行不通。据我所知,这种延迟主要来自 OBS 本身,建议直接使用 ffmpeg。

因此我尝试了以下方法:

H: ffmpeg -f gdigrab -framerate 30 -offset_x 0 -offset_y 0 -video_size 1920:1080 -i desktop -c:v libx264 -preset ultrafast -crf 0 -bufsize 65536 -f rtp udp://192.168.200.3:1935

似乎正在做一些事情:

  Metadata:
    encoder         : Lavf58.29.100
    Stream #0:0: Video: h264 (libx264), yuv444p, 1920x1080, q=-1--1, 30 fps, 90k tbn, 30 tbc
    Metadata:
      encoder         : Lavc58.54.100 libx264
    Side data:
      cpb: bitrate max/min/avg: 0/0/0 buffer size: 65000 vbv_delay: -1
SDP:
v=0
o=- 0 0 IN IP4 127.0.0.1
s=No Name
c=IN IP4 192.168.200.3
t=0 0
a=tool:libavformat 58.29.100
m=video 0 RTP/AVP 96
a=rtpmap:96 H264/90000
a=fmtp:96 packetization-mode=1
a=control:streamid=0

frame=  188 fps= 30 q=0.0 size=    1631kB time=00:00:05.80 bitrate=2304.3kbits/s dup=3 drop=0 speed=0.936x

C:VLC-Media-Open Network Stream- udp://@:1935 – 未打开。

尝试相同的操作,但发送到本地主机而不是 IP,并在本地打开 VLC 会产生类似的结果。如果我将 ffmpeg 的输出设为文件而不是 UDP 连接,则该文件具有我希望看到的实时流式传输结果。

我做错什么了吗? 有没有更好的替代方案?

相关内容