我正在进行一个项目,最终希望有一台主机 (H) 能够执行大量繁重任务,还有一台客户端计算机 (C) 向 H 发送输入并接收 H 屏幕上的视频流。没有互联网,只有 LAN。
要求:
- 操作系统:Windows 10
- 费用:仅限免费软件
- 低延迟
- 最低 720p
- 至少 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 连接,则该文件具有我希望看到的实时流式传输结果。
我做错什么了吗? 有没有更好的替代方案?