文章目录
  • 串流控制和远程桌面控制
  • 相关概念
  • 串流软件和方案
  • 商业软件方案
  • 开源方案
  • Sunshine
  • sunshine 自启设置
  • MoonLight
  • 利用串流软件远程控制
  • VPN 虚拟组网实现异地设备串流控制
  • 内网穿透
  • 关键概念
  • 内网穿透方案
  • 简单易用相关服务软件
  • 使用Ngrok实现内网穿透
  • 开源软件方案Frp


串流控制和远程桌面控制

  • 我原本是想找远程桌面控制方案,特别是异地远程桌面,后来了解到了游戏串流软件也不仅仅可以远程游戏,还可以远程控制桌面,在画面显示上有更多的选项配置
相关概念
  • 串流(Streaming)是一种数据传输方式,尤其在多媒体内容如音频和视频的传输中非常常见。它允许数据在传输过程中被连续地接收并几乎立即开始播放,而无需等待整个文件下载完成。串流技术的核心优势在于它能够提供即时的内容访问,减少用户的等待时间,同时也减少了对存储空间的需求,因为内容不需要被永久保存在本地设备上。
    串流的一般含义:
    在一般情况下,串流指的是任何类型的内容(如音乐、电影、电视节目、现场直播等)通过互联网实时传输的过程。例如,Netflix、YouTube、Spotify等服务提供的视频和音乐内容就是通过串流技术送达用户的。这种技术使得用户可以即时观看或收听内容,只要他们的网络连接稳定。
    游戏串流:
    游戏串流是串流技术的一个特定应用,专注于电子游戏的实时传输。它可以分为两种主要形式:
  1. 本地串流:这是在用户自己的设备之间进行的串流,比如一台游戏主机或高性能PC将游戏画面串流到另一台设备(如平板电脑、智能手机或另一台PC)上。这种情况下,游戏仍然在本地运行,只是显示在另一个屏幕上。NVIDIA的GeForce Experience、Moonlight、Steam Link等服务提供了这样的功能。
  2. 云游戏串流:在这种模式下,游戏实际上是在远程服务器上运行,服务器处理所有的计算和图形渲染,然后将游戏画面和音频作为流媒体实时发送给用户。用户只需通过互联网连接,就可以在任何兼容的设备上玩游戏,而无需下载或安装游戏本身。Google Stadia、NVIDIA GeForce Now、Xbox Cloud Gaming等服务都是基于云游戏串流的例子。

游戏串流不仅提供了游戏内容的即时访问,还允许用户在多种设备上享受游戏,甚至在不具备足够游戏性能的设备上也能玩高端游戏。然而,游戏串流的质量高度依赖于网络连接的速度和稳定性,任何延迟或带宽不足都可能影响游戏体验。

串流软件和方案

商业软件方案
开源方案

需要一定的配置和操作,灵活效果上限高

Sunshine
  • sunshine的发型版本很多,体积不大,对于windows,可以选择免安装版本(portable)
  • 如果选择安装版,安装中途可能会下载一些组件,可能要到github上下载,而国内下载速度很慢,这会导致安装时间大大加长
  • 因此这里推荐直接用免安装版,体积略大点
sunshine 自启设置
  • 现在的版本可能会开机自启,比如Version v0.23.1版本
  • 在这个版本sunshine会注册一个自定运行的服务,您可以这样检查或将自动运行的服务类型改为手动
  • 管理员权限打开powershell命令行执行以下内容
PS> get-service -Name Sunshine*

Status   Name               DisplayName
------   ----               -----------
Running  SunshineService    Sunshine Service
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.

禁用自启动

Set-Service -Name SunshineService -StartupType Manual
  • 1.

下次重启就可以看到效果

MoonLight

利用串流软件远程控制

典型的游戏串流软件组合Sunshine 和 Moonlight 组合主要是为了游戏串流而设计的,但它们确实可以用来控制远程桌面。

该组合不仅可以游戏串流,也可以串流桌面和远程控制桌面(和远程桌面的功能部分重叠,但又有不同)

它与传统的远程桌面控制方案(如Microsoft的Remote Desktop Protocol (RDP),TeamViewer,向日葵等)有几个关键的不同点:

  1. 目的和优化方向
  • Sunshine + Moonlight:这些工具特别优化了游戏画面的实时传输,注重低延迟和高质量的视频流传输,以确保游戏体验尽可能流畅。
  • 传统远程桌面方案:设计用于一般的桌面环境控制,包括办公应用、文件管理等,更注重整体的系统性能和安全性。
  1. 图形处理
  • Sunshine + Moonlight:利用GPU加速来处理视频编码和解码,这对于游戏串流至关重要。
  • 传统远程桌面方案:可能更多依赖CPU进行桌面画面的压缩和传输,这在处理复杂图形时效率较低。
  1. 延迟
  • Sunshine + Moonlight:力求最小化延迟,这对于实时交互的游戏非常重要。
  • 传统远程桌面方案:可能有更高的延迟,因为它们不一定针对实时交互进行优化。
  1. 网络要求
  • Sunshine + Moonlight:可能需要更好的网络条件以支持高质量的视频流传输。
  • 传统远程桌面方案:通常能够更好地适应不同的网络条件,包括低带宽环境。
  1. 兼容性和平台支持
  • Sunshine + Moonlight:虽然跨平台,但主要是为了游戏串流设计,可能在某些非游戏场景下的兼容性不如专门的远程桌面软件。
  • 传统远程桌面方案:广泛支持各种操作系统和设备,适用于多种远程工作和管理场景。
  1. 安全性和管理功能
  • Sunshine + Moonlight:主要关注点不在企业级的安全性和管理功能上。
  • 传统远程桌面方案:通常包含更强大的身份验证机制、访问控制和审计功能,适合企业和组织使用。

因此,尽管Sunshine 和 Moonlight 可以在某种程度上实现远程桌面控制,但它们最适合游戏串流场景。对于需要全面控制、安全性和企业级功能的远程桌面使用场景,传统的远程桌面控制方案更为合适。

VPN 虚拟组网实现异地设备串流控制

  • 同一个局域网内的设备可以方便的远程串流控制或者远程桌面
  • 如果要对不同局域网内的设备(或者可以上网但是没有可用公网ip)间做类似的事情需内网穿透或针对异地设备组网
  • 方案有许多,比如TailScale或者国内的皎月连NatPierce也很方便
  • 借助虚拟组网软件,可以把局域网内的串流控制迁移到非局域网的设备间去(当然局域网内经过的路径更简单,所以画质和刷新率上限更高)
  • NatPierce配合前面的Sunshine和MoonLight组合拳,可以实现非同一个局域网的两个设备进行远程控制或者投屏控制,而且和windows自带的远程控制不同,组合拳允许物理机和远程控制显示相同的画面,两边都可以施加控制,并且在分辨率和刷新率上等显示设置有更丰富的选项;
  • 此外,还可以安装虚拟机显示器等方法,sunshine和moonlight可以为您的计算机添加一个副屏(用一个平板或者其他大屏设备)实现可触摸的副屏,甚至可以无线地搬到其他地方,可玩性高
  • 而windows自带的远程桌面使用简单,不需要安装软件(不过也需要服务端是专业版系统已上或者打补丁)

内网穿透

内网穿透(NAT Traversal),也称为内网映射,是一种技术,用于使处于防火墙或NAT(网络地址转换)设备后面的设备能够与外部互联网进行通信。

这对于需要外部访问内部网络服务(如远程桌面、家庭服务器、物联网设备等)特别重要。

关键概念
  1. NAT(网络地址转换)
  • 静态NAT:将内部网络的私有IP地址静态映射为外部网络的公共IP地址。
  • 动态NAT:使用一组公共IP地址动态映射内部网络的私有IP地址。
  • PAT(端口地址转换):也称为NAT Overload,将多个私有IP地址映射到一个公共IP地址,但使用不同的端口号来区分不同的内部设备。
  1. 防火墙:一种网络安全系统,监控和控制进入和离开网络的流量,防止未经授权的访问。

内网穿透方案

相关方案有不少,有些有一定的免费额度

简单易用相关服务软件

ZeroTier和Tailscale,皎月连(NatPierce)等工具为没有公网IP的设备提供虚拟组网确实属于内网穿透技术的一种应用。内网穿透通常指的是在没有直接公网IP地址的情况下,使位于不同局域网(LAN)内的设备能够像在同一局域网内那样通信的技术。

内网穿透技术允许设备绕过NAT(网络地址转换)限制,即使它们处于不同的私有网络中也能互相通信。ZeroTier和Tailscale通过创建一个虚拟的覆盖网络(overlay network),使得参与的设备看起来像是连接在一个共同的局域网上,从而实现了设备间的直接通信,就好像它们共享同一个本地网络一样。

这些工具通常会为每个设备分配一个虚拟的私有IP地址,并通过互联网建立隧道来转发数据包,这样就可以从外部网络访问内部网络的设备,或者让内部网络的设备之间相互通信,而无需考虑它们各自的物理网络位置或是否拥有公网IP地址。

使用Ngrok实现内网穿透

Ngrok是一个非常流行的内网穿透工具,允许你将本地服务器公开到互联网上。

Ngrok 为开发测试用途提供了一个有限的免费套餐

  • 注册并下载Ngrok:https://ngrok.com/
  • 例如映射http端口,启动Ngrok并指定本地端口:
ngrok http 8080
  • 1.

这将本地的8080端口映射到一个公开的URL。

又比如,我将Alist 通过Ngrok提供的内网穿透服务,得到公网可以访问的https连接:

PS> ngrok http 5244
#生成内容示例
ngrok           (ctrl+c to quit)
sign up to try new private endpoints https://ngrok.com/new-features-update?ref=private
session status      online
Account          xuggoledeyouxiang5@gmail.com (Plan: Free)
Version          3.12.0
Region          Japan (jp)
Latency          316ms
Web Interface       http://127.0.0.1:4040
Forwarding        https://abf8--139-174.ngrok-free.app -> http://localhost:5244
connections        ttl opn rti rt5 p50 p90
0  0  0.00 0.00 0.00 0.00

HTTP Requests
-------------

20:49:05.428 CST GET  /d/ColorfulPC/Music/ChineseSongs/05_         -         .mp3                     
2020:49:05.102 CST GET  /d/ColorfulPC/Music/ChineseSongs/05_         -         .mp3
2020:49:05.428 CST GET  /d/ColorfulPC/Music/ChineseSongs/05_         -         .mp3
2020:48:54.304 CST POST /api/fs/list                                                           
2020:48:39.306 CST GET  /d/ColorfulPC/Music/ChineseSongs/Em Sẽ L    Cô Dâu - Minh&nb 
2020:48:21.102 CST GET  /Music/ChineseSongs/undefined                                                   
2020:48:20.254 CST GET  /Music/ChineseSongs/undefined
2020:48:20.254 CST GET  /d/ColorfulPC/Music/ChineseSongs/05_         -         .mp3
2020:48:15.237 CST GET  /assets/audio.e205396a.js
2020:48:13.189 CST GET  /assets/File.3cee378c.js
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 其中web interface是内网穿透管理页面http://127.0.0.1:4040
  • Forwarding是穿透后的https连接,其他能够访问互联网的设备可以根据这个链接访问到您映射出来的端口及其内容
  • 之后所有访问都会被记录在web interface
  • 详情参考Ngrok文档(注册和登录可能需要点魔法)
  • 访问提供的公开URL,即可从外部访问本地服务器。
开源软件方案Frp
  • 需要一个具有公网IP地址的服务器,以供自己配置穿透服务
  •  frp (gofrp.org)