moonlight吧 关注:10,468贴子:40,665
  • 15回复贴,共1

自问自答!moonlight连接统计信息的翻译和含义。方便查询!

只看楼主收藏回复

一、非技术人员、非网络工程师,文章是本人结合自身经验和查询整理的,可能存在疏漏与错误,各位可以指正,但轻拍。
二、本文为了那些看不懂moonlight上的统计信息代表含义的人查询理解使用。弄明白统计信息也就清楚怎么解决问题让你更好的设置串流;
三、几个基础知识
3.1、串流或者说远程连接程序,在连接并能操控远程电脑时主要经过这几个过程:(当前操作的电脑或手机(安装moonlight的硬件)我们称作A,目标电脑(真正运行游戏,安装sunshine的电脑)我们成为B)
i、你在A上移动鼠标、双击、键盘输入等操作,将这些信息通过网络传给B;
ii、B接收到信息后进行对应操作(移动鼠标、双击、键盘等),紧接着B电脑屏幕发生变化,然后将B屏幕发生的变化传给A;
iii、A实时显示B屏幕发生的变化;
简单讲,通信等于一辆车,从A装货发往B,B接收后按照A的要求把货物装车再发往A。
3.2、moonlight设置中的分辨率和帧率;
视频的本质是快速连续的图片通过人眼自身的视觉停留产生的动态连续感觉,帧率代表一秒钟多少张图,越大人的动态连续感觉就越好。分辨率是什么呢?720P、1080P、2K、4K代表一张图片有多少像素(数据/元素),说白了就是越高代表细节越多,而细节越少就越模糊;(这里强调一下,对于你看到的图片,分辨率其实有两个含义,一个是图片本身,另一个是你显示器分辨率,一张图片的最终显示效果以两者最低的那个决定,所以如果你的显示器是1080P,就不要设置为2K,否则浪费;当然你网好可以任性,当我没说)
那么什么决定了我们观看视频的观感?是的高分辨率+高帧率组合会让你看到清晰的连贯而自然的动态视频。
在设置里,这两项等同于我们的需求,但是能不能满足,还要看其他的约束。
3.3、moonlight设置中的视频比特率;
视频是作为一张一张图片进行传输的,而网络传输不是将一张图片一次性发过来,网络的本身的规则每一次传输的数据是有一定大小的,1472字节(1KB多)?(数值和原因不懂,应该是网络协议规定,只知道很小),因此一张图片一般是需要分割很多分后传输过来的。我们越快把数据传过来,就能越快的将图片进而视频展示出来,既然说到了快,这里就存在一个速度,即网络传输速率,设置里名为视频比特率,单位是bps,而Mbps等于1,000,000bps(10^6,不是1024的转换),1Mbps/8得到了另一个单位即0.125MB/s,也就是每秒0.125MB。如果1张图片是1M(1MB),那就需要8s。那么视频比特率当然越高我们就能越快的获取到完整的图片或者视频。但是这个主要受两者限制,即对方(B点)能不能提供足够高的速率,传输通道能不能支持这么快的速度?
先说传输通道;我们办的宽带一般说200M、300M、1000M说的也是速率即200Mbps,这叫带宽。发现没有,单位与上方的网络传输速率一样,但这代表两个含义;宽带的这个单位代表公路上的最高限速,不允许超过;网络传输速率代表车速;因此这两个值取最低;同时呢,对于公路,车速是一个指标,另一个指标是距离,这个距离我做了简化,包括信号传输距离和过程交换机转接速度。(实际上影响因素很多,这里没法详细说明,再者我也不懂(手动狗头),拿现实举例子,我在河南,与河南人打电话与海南打电话就是有延迟;电信、联通运营商之间信息交换就是有延迟)
而对方(B点)能不能提供足够高的速率主要看两个,其一是本身图片视频的生成速度,其二是上传速度;图片视频的生成速度主要指电脑本身处理数据的性能,尤其对玩游戏来讲,电脑本身如果无法达到60fps,你怎么输出60fps的视频呢?所以该项要自行在主机上验证能顺畅使用再说远程串流。而上传速度,家庭局域网中,无论路由器还是网线还是机器网卡都会限制网络速度,但是通常都会大于100Mbps;但远程连接时,以我家千兆带宽为例,下载速度大致在8~900Mbps,但是上传速度最高40Mbps,远程访问家里向外传输主要看上传速度,也就是最大40Mbps。
综上所属,影响视频比特率的因素包括B机器本身性能、家里(B机器)局域网网络带宽、家里(B机器)上行带宽(外网使用)、使用机器(A机器)网络带宽、距离等。
注:上述是理论影响,实际影响有很多,最常见例子是不管A还是B有很多人用或者有人在用迅雷下动作电影。。。网速能好才怪。。。
3.4、视频解码;
看到上面的视频比特率有这么多影响因素,绝望不?但那也只是说明了速度的影响。一张图片给你显示出来还有另一个因素(上面其实提到过),就是文件大小。文件越大,同一速度花费时间就越大,同样的,文件越大,同一时间就需要速度越大。(***,我都不想写了,还有多少人想看?)
虽然上面讲了网络传输速率有这么多因素,但是在网络使用人数不多(别人也会占用网速啊)和他人非极端操作(迅雷下载)下,这个速率的最大值暂时是恒定;那我们也就知道了1秒中最大能传输的文件上限了,如果超过这个上限,就会卡,不超过就万事大吉。这个上限我就不展开说了,上一部分有说明。那什么是文件大小呢?这个文件大小就是你的需求,即上上个部分说的高分辨率+高帧率组合。
举个例子,以分辨率720P,帧率60fps为例。一张图片不考虑其他元数据只考虑理论上图片大小,720P是1280×720个像素,每个像素通过红、绿、蓝3个数值组合表示对应颜色,即3字节(Byte),因此一张图片大小为1280×720(像素)×3(3种颜色表示)/1024(转换为kb)/1024转换为MB=2.64MB。60fps代表60张图片,即1秒钟文件大小为2.64*60=158.4MB.
为了满足这个条件网络传输速率要达到多少?上一部分有换算,1Mbps/8=0.125MB/s,也就是1Mbps,一秒钟最多传输0.125MB,需要速率是1267.2Mbps.天呐,约等于千兆带宽才能满足720P+60fps?
===========视频码率手动分割线===============
行吧,上面废话说完了,视频文件传输一个很重要的因素是压缩,一张720的图片大小通常被压缩到0.4MB-1MB之间,甚至更低。这样传输起来数据就小得多了,时间就短的多了。既然有压缩,就有解压缩,因此在moonlight的设置-高级设置中有视频编解码器,有三种选项(自动不算)H.264(AVC)、H.265(HEVC)、AV1,这就是应用于视频压缩和传输的编码标准。我不知道AV1,单就265和264来讲,对比264,265提供了更高的压缩效率和更优质的图像质量,并支持更高的分辨率,如4K和8K视频;而264是长期的最广泛使用的标准,因此老设备、性能差的设备对265支持不好(解码慢后者不能解码),但是对264支持没问题。所以A、B都是最近几年的设备可以先试试265,不行的话再试试264.
这里说一下moonlight设置中的视频解码器,有软件解码(软解)和硬件解码(硬解),硬解使用的CPU直接解码,所以速度快但是CPU占用高、软解使用软件解码慢、CPU占用低。这就跟设备性能有关了,况且有的CPU不支持硬解,具体视情况选择。
四、具体信息说明(含翻译与对应含义)
4.1、Video stream:视频流
这个我没弄明白,个人怀疑是B设备的输出帧率。
4.2、Incoming frame rate from network:网络输入帧率
B输入给A每秒多少张图片;这个表示数据到A电脑的最大数据。如果这个低,其他再高视频也会模糊卡顿。这与视频比特率与网速影响最大,如果卡或者不清晰但是不知道是不是网速的原因,可以适当调高一点moonlight设置中的视频比特率值,降低分辨率试试。
4.3、Decoding frame rate:解码帧率
这个说的就是每秒视频解码(基础知识有讲到)了多少图片,这个值小于等于网络输入帧率,越接近或者等于越好,这个慢,代表A电脑解码能力不行。可以通过调整视频编解码器+视频解码器来调整压缩和解码方式,降低分辨率和FPS也有帮助,毕竟相当于需要解码的数据变少了。(A电脑对硬解支持不高?电脑其他软件导致CPU占用或者其他性能占用过高?对H.265压缩标准支持不够?)
4.4、Rendering frame rate:渲染帧率
视频图片解码后,这些数据就是一大串01数值,需要通过GPU或者CPU(一般是GPU)转化成可显示的图片给到显示器,这个过程叫做渲染。这个值小于等于解码帧率,越接近或者等于越好,这个慢,代表A电脑GPU不行。
4.5、Frames dropped by your network connection:网络连接丢失的帧数
这表示从主机发送但未成功到达客户端的帧数,最好是0,越低越好。有时候有的地方会使用丢失率来表示,它应该在大多数时间保持非常接近 0%。
从B向A运回货物,比如一共运输了10辆,若10俩都到了丢失就是0%;若丢了一辆,则显示10%。
因为各种原因存在网络丢包现象,通常跟双方的网络环境有关。(网络通讯是会告知运了多少数据,分多少次运输,如果丢包,A会告诉B然后B会把丢失的重新发送)
4.6、Frames dropped due to network jitter:由于网络抖动导致的帧丢失
不太懂这个,联想一下网络测速有一个抖动值,这个指标可能与网络性能中的抖动有关。这个最好是0,越大数据丢失越多,也就越卡。
4.7、Average network latency:平均网络延迟
这是最重要最常见的参数之一,我们以前玩CF等显示FPS指的就是这个。代表你在A电脑上操作数据传给B电脑,B电脑返回信息给A电脑的时间;这个时长肯定时越短越好。通常使用ms(毫秒)作为单位,个人认为40ms以内就好,最好在20ms以内。
!!!注意,这个参数主要指双方信息传输的快慢,等同于车辆从A到B然后装车再发回A的时间。有时候这个快不代表你就不卡,因为有可能别人同时并排同行100辆车,你只能使用10辆车,因为一辆车能装的货物是有限的,所以即使速度快,但是你那边仍旧显示很卡,因为货还没全部运过来。
4.8、Average decoding time:平均解码时间
3是每秒解码多少张图片,这个是解码(将帧解码并准备好给渲染)需要多少时间,通常使用ms(毫秒)作为单位,
4.9、Average frame queue delay:平均帧队列延迟
这是帧在解码后等待渲染的平均时间。等待通常是因为前一帧仍在渲染或等待 V-Sync。它通常应保持在帧间隔(60 FPS 为 16 毫秒)以下。此项介于3和4之间,可以对照查看。
4.10、Average rendering time(including monitor V-sync latency):平均渲染时间(包括监视器V-sync延迟)
这是将解码的帧渲染到显示器上所需的平均时间.所谓的V-sync表示你在moonlight设置是否开启垂直同步。如果前面所有步骤比较慢,则尽量不要开启这个垂直同步,可能会导致更为卡顿;如果前面的步骤速度快,开启后视频更平滑。
五、其他说明
5.1、如果输入参数都挺高,但是使用过程卡,如果确认B不卡,就很有可能是A设备性能差。我之前在家使用投影仪玩游戏,经常出现卡顿情况,得慢慢调整合适的设置来找到能接受的效果。
5.2、通过moonlight设置处打开统计信息,或者使用快捷键Ctrl+Alt+Shift+S。非电脑就乖乖从设置那打开吧。
5.3、本文只是方便当你使用moonlight卡的时候,能看懂仪表,弄懂影响因素,具体怎么操作,还是得各位自行研究,我也只是理论上写了这个文档,对不对不重要,重要的是态度给到了,其他的就留给大家补充了。(逃)


IP属地:河南1楼2024-09-24 14:54回复
    支持科普


    IP属地:浙江2楼2024-09-24 15:47
    回复


      IP属地:广东来自Android客户端3楼2024-09-24 16:53
      回复
        厉害


        IP属地:广东4楼2024-09-24 17:36
        回复
          大佬,我看你们发的平均解码时间基本都是5毫秒以内,我的小米平板5是10到12正常吗?cpu是860


          IP属地:天津来自Android客户端5楼2024-09-25 09:50
          回复


            IP属地:浙江来自Android客户端6楼2024-09-25 14:33
            回复
              这不给精


              IP属地:重庆7楼2024-09-26 08:25
              回复


                IP属地:广东来自Android客户端8楼2024-10-24 00:01
                回复
                  有大佬知道为啥网络丢失帧这么高吗


                  IP属地:江西来自Android客户端9楼2024-11-12 16:17
                  收起回复
                    大佬,我手机开热点,电脑和平板同时连接手机热点,平板和电脑串流费流量吗


                    IP属地:北京来自iPhone客户端10楼2024-11-13 21:59
                    收起回复
                      4.6、Frames dropped due to network jitter:由于网络抖动导致的帧丢失
                      不太懂这个,联想一下网络测速有一个抖动值,这个指标可能与网络性能中的抖动有关。这个最好是0,越大数据丢失越多,也就越卡。
                      这一个点纠正一下,moonlight把所有解码完的数据放到一个渲染队列里面等待渲染,而渲染是需要时间的。
                      以60fps为例,
                      第一种情况主机端以16.6ms定时发送一帧图像到moonlight,假如发生网络波动,导致第一个16.6数据没传输完,第二个33.3一下子来了两帧完整的数据,解码完渲染队列中存在两帧甚至更多的数据,这个时候渲染器会判断如果待渲染的数据过多会扔掉一部分图像(这个图像本来就是有最新的,没必要显示旧的数据),这一部分扔掉的图像就是统计里面的Frames dropped due to network jitter
                      第二种情况moonlight这边渲染一帧耗时过长,导致没办法及时渲染完全部数据,也会被扔掉,这个扔掉的图像也会记录在这个位置
                      所以得看其他参数判断是哪种情况


                      IP属地:河北11楼2025-01-23 10:00
                      回复