我在寻找一种在网络上复制我的桌面的方法。(能够在web浏览器客户端上工作的东西将是惊人的。)
vnc / x11vnc,但是质量/框架太低了。(我认为智能手机客户端的cpu太高了。)ffmpeg将屏幕转换成流媒体视频,但我做不到。(质量差而不是真正的流系统)有办法吗?也许通过使用X11转发和复制屏幕?
也许是ssh -X和xrandr -d :0 --output HDMI-1 --auto的混合?(此xrandr代码复制屏幕在HDMI-1上)
比如:xrandr -d :0 --output http://192.168.1.3:9001 --auto (我在做梦。)
编辑:也许xpra可以做我想要做的事?但我暂时不能让它起作用。
发布于 2018-12-17 15:12:37
您可以使用ffmpeg:
在发送设备上,运行:
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并运行:
ffplay udp://@:9000您需要相应地设置RECEIVERIP,并通过修改-s 1800x1000来调整要传输的屏幕的区域。当然,您可以选择任何您想要的自由端口而不是9000。
就性能而言,您可以尽可能地调整-framerate和-preset (...|fast|ultrafast),同时保持所需的质量和延迟。
ffplay是一个非常小的客户端,可以满足您的需要。您也可以使用vlc。
要在浏览器上显示流,可能还必须使用流服务器。vlc有这种能力,但是它可能很慢,而且我还没有找到足够多的文档。
优化后的传输命令(用于更低的延迟,但质量更低,而且不是特别的动态内容)可能如下所示:
ffmpeg -f x11grab -s 1800x1000 -framerate 15 -i :0.0 -preset ultrafast -vcodec libx264 -tune zerolatency -b 500k -f mpegts udp://RECEIVERIP:9000为了进一步优化负载,可以利用硬件加速(如记录在案 )。虽然这与平台有关,但如果支持的话,它可能会显著减少CPU负载。
发布于 2018-12-16 20:18:10
发布于 2020-11-16 14:39:42
是的,你可以用xpra来做。( xpra、vnc和ffmpeg解决方案都将使用屏幕捕获像素数据,因此存在性能限制),假设您的X11显示为":0",请尝试:
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/https://unix.stackexchange.com/questions/487628
复制相似问题