首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过网络复制屏幕Xorg (Xpra ?)

通过网络复制屏幕Xorg (Xpra ?)
EN

Unix & Linux用户
提问于 2018-12-12 18:19:57
回答 3查看 1.7K关注 0票数 5

我在寻找一种在网络上复制我的桌面的方法。(能够在web浏览器客户端上工作的东西将是惊人的。)

  • 我尝试使用vnc / x11vnc,但是质量/框架太低了。(我认为智能手机客户端的cpu太高了。)
  • 我试图用ffmpeg将屏幕转换成流媒体视频,但我做不到。(质量差而不是真正的流系统)

有办法吗?也许通过使用X11转发和复制屏幕?

也许是ssh -Xxrandr -d :0 --output HDMI-1 --auto的混合?(此xrandr代码复制屏幕在HDMI-1上)

比如:xrandr -d :0 --output http://192.168.1.3:9001 --auto (我在做梦。)

编辑:也许xpra可以做我想要做的事?但我暂时不能让它起作用。

EN

回答 3

Unix & Linux用户

发布于 2018-12-17 15:12:37

您可以使用ffmpeg

在发送设备上,运行:

代码语言:javascript
复制
ffmpeg -f x11grab -s 1800x1000 -framerate 30 -i :0.0 -preset fast -vcodec libx264 -tune zerolatency -b 900k -f mpegts udp://RECEIVERIP:9000

在接收设备上,打开防火墙端口9000/UDP并运行:

代码语言:javascript
复制
ffplay udp://@:9000

您需要相应地设置RECEIVERIP,并通过修改-s 1800x1000来调整要传输的屏幕的区域。当然,您可以选择任何您想要的自由端口而不是9000

就性能而言,您可以尽可能地调整-framerate-preset (...|fast|ultrafast),同时保持所需的质量和延迟。

ffplay是一个非常小的客户端,可以满足您的需要。您也可以使用vlc

要在浏览器上显示流,可能还必须使用流服务器。vlc有这种能力,但是它可能很慢,而且我还没有找到足够多的文档。

备注:

优化后的传输命令(用于更低的延迟,但质量更低,而且不是特别的动态内容)可能如下所示:

代码语言:javascript
复制
ffmpeg -f x11grab -s 1800x1000 -framerate 15 -i :0.0 -preset ultrafast -vcodec libx264 -tune zerolatency -b 500k -f mpegts udp://RECEIVERIP:9000

为了进一步优化负载,可以利用硬件加速(如记录在案 )。虽然这与平台有关,但如果支持的话,它可能会显著减少CPU负载。

票数 3
EN

Unix & Linux用户

发布于 2018-12-16 20:18:10

Unix & Linux用户

发布于 2020-11-16 14:39:42

是的,你可以用xpra来做。( xpra、vnc和ffmpeg解决方案都将使用屏幕捕获像素数据,因此存在性能限制),假设您的X11显示为":0",请尝试:

代码语言:javascript
复制
xpra shadow :0 --bind-tcp=0.0.0.0:14500 --tcp-auth=pam
#wait a second or two and then:
xdg-open http://localhost:14500/
票数 0
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/487628

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档