moonlight串流客户端性能要求 您所在的位置:网站首页 moonlight掉帧 moonlight串流客户端性能要求

moonlight串流客户端性能要求

2024-06-28 02:27| 来源: 网络整理| 查看: 265

最近在B站看低价装机视频看上瘾了,想自己也装一台机器,最主要的需求就是moonlight串流要流畅,本文长话短说,讨论moonlight客户端到底需要满足什么样的性能。

背景介绍

我的需求是能够流畅运行moonlight,因此CPU算力无所谓,能开机就行,因此选择了比较古老而且便宜的e3系列,选择不带集成显卡的版本。moonlight我误以为只需要渲染,误以为是个显卡都能带的动,于是就有了本文。

本文探讨到底什么样性能的显卡才能够带的动moonlight。

串流原理(省流:不关注细节可跳过)

串流是指服务端编码,将编码后的数据传输给客户端,客户端进行解码,再进行渲染。

串流时常见的编码有三种,从旧到新分别是:AVC(也叫H264),HEVC(也叫H265),AV1(很新,2023年依然很新),需要使用对应的解码器才能观看。

常见的分辨率有:1080p(1920 * 1080)、1440p也叫2k(2560 * 1440)、4k(3840 * 2160)或者(4096 * 2160),可以自定义任意数值,串流时推荐使用和主显示器相同的分辨率。

视频格式有:HD(720p),FHD(1080p),UHD(4k,2160p)

码率:moonlight对每个分辨率帧率的配置下均会有默认的码率,个人认为推荐默认码率挺合理的。码率越高视频越清晰,码率越低视频越模糊,可以姑且理解为图像压缩引起的损耗。码率与网络带宽和网络流量强相关,40mbps的码率大概能打到3040的带宽,因此需要根据自家的网络情况来选择码率。浙江电信的上行带宽是3040M,所以差不多能跑2k60帧。

CPU/GPU的组成

现代CPU主要功能是计算处理单元,即平时说的X86还是ARM,用来执行汇编指令;除此之外还有专门用于视频编码和视频解码的电路模块,运行速度快,功耗低。二者从芯片设计上讲是较为独立的电路,因此在CPU负载较高的情况下,硬件解码也能流畅地运行。

现代GPU同样也是由很多个部件组成的,例如最常说的3D性能、游戏性能等算力功能,平时打游戏吃不吃GPU就是说它的;同样,除此之外,GPU还有专门用于视频编码和视频解码的电路模块,与游戏性能等独立。例如,在一边玩游戏一边录屏的情况下,并不会因为录屏而导致游戏过于卡顿,因为存在GPU专用的“硬件编码器”。

平时大部分用户关注的是CPU的运算能力和GPU的运算能力,因此对编码器和解码器的相关资料比较少,会误以为性能好的CPU和GPU它的编码解码能力就好,这个是不对的,关联性不大。

例如:amd r9 270x 与 gtx650,前者跑分8万后者跑分4万,但前者解码器却解码能力弱爆了。

例如:intel 集成显卡的游戏性能很烂,但它的解码水平可能和N卡差不多。

软件解码/硬件解码

通过编写程序,使用CPU处理数据再输出为视频,无论多么老的CPU,AVC、HEVC、AV1的算法总能够通过编程实现,因此这个过程被称为软件解码、软解。通常来说性能较差(尤其是HEVC,见实机测试)。

硬件解码就是使用CPU或GPU专用的硬件模块执行解码的过程,因为这些电路在出厂时候就固定了,因此只有支持的编码格式和支持的分辨率范围才会能够被硬件解码、硬解。

最常见的硬件解码场景就是看直播,很多直播软件都会有一个勾选框“是否开启硬件解码”、“是否开启硬解”,缓解手机的发热程度,但可能出现音画不同步。因为对音频的硬件解码和对视频的硬件解码功能可能是独立的。

举例:某显卡声称它的硬件解码支持 AVC 的 UHD,支持 HEVC 的 FHD,不支持 AV1,那么视频支持情况如下。

AVC、1080p,成功。 AVC、4k,成功。 HEVC、1080p,成功。(FHD就是1080) HEVC、2k,失败。因为 FHD 最大是1080,只要超过1个像素就不可以硬解。 AV1、失败

在硬解失败的情况下,就只能使用软解了,我的垃圾CPU体验下来 AVC 的软解大概10ms以内,HEVC的软解可能是50ms。而对应的硬解只有1ms。

同样,硬解也是有性能约束的,虽然官方宣称支持hevc解码,但不代表能够稳定解开2k60,可能只能到2k30的水平,需要实际测试。

串流服务端要求(省流:不关注细节可跳过)

我只有一台3060ti做服务端,它拥有豪华的硬件编码器,被称为 NVENC,因此没什么好讲的。

串流客户端要求(省流:不关注细节可跳过)

通常情况下,串流客户端是性能较弱的便携设备,最最关注的就是硬解能力。

硬件解码能力示意图:安卓使用CodecInfo软件可以查询,我的手机和平板如图所示。

硬件解码能力示意图:PC使用GPUZ和DXVA软件可以查询,但不是很准,左边AMD很拉跨,右边GTX比它强。

电脑设置串流的解码方式

手机设置串流的解码方式(略)

实机测试情况设备介绍

服务端:rtx 3060ti,性能过剩,编码估摸着 1ms 的延迟。

1号选手,nvidia gtx650。价格75元,2012年9月。 2号选手,amd r9 270x。价格120元,2023年10月。 3号选手,红米note12turbo,骁龙7gen2。2023年3月。 4号选手,华为m6平板,海思980。2019年7月。 5号选手,苹果A12。2019年3月。 6号选手,macbookpro 2016。2016年。 凑数选手,e3 1220v3,软解。2013年。 7号选手,nvidia gtx750。价格125元,2023年。

注1:avc就是h264,hevc就是h265,AV1就是AV1

注2:HD是720P,FHD是1080P,没有2K,UHD是4K

测试情况 设备 分辨率&码率 解码方式 解码延迟 帧数 备注 gtx650 1920 * 1080, 20mbps avc硬解 1ms 60 稳定,显卡70% gtx650 1920 * 1080, 20mbps hevc硬解 1ms 60 稳定,显卡70% gtx650 2560 * 1440, 40mbps avc硬解 1ms,掉帧时100ms 60,掉帧时20 显卡占用高,飙到100时掉帧 gtx650 2560 * 1440, 40mbps hevc硬解 1ms,掉帧时100ms 60,掉帧时20 显卡占用高,飙到100时掉帧 e3 1220v3 2560 * 1440, 40mbps avc软解 10-30ms 60 不稳定 e3 1220v3 2560 * 1440, 40mbps hevc软解 50-100ms 10 严重卡顿无法使用 amd r9 270x 1920 * 1080, 20mbps avc硬解 8ms 60 显卡占用高 amd r9 270x 2560 * 1440, 40mbps avc硬解 黑屏 黑屏 该显卡硬解avc只支持FHD amd r9 270x 2560 * 1440, 40mbps hevc硬解 黑屏 黑屏 该显卡硬解不支持hevc 骁龙7gen2 2560 * 1440, 40mbps avc硬解 10ms 60 稳定 骁龙7gen2 2560 * 1440, 40mbps hevc硬解 10ms 60 稳定 海思980 2560 * 1440, 40mbps avc硬解 7ms 60 稳定 海思980 2560 * 1440, 40mbps hevc硬解 6ms 60 稳定 苹果A12 2560 * 1440, 40mbps avc硬解 未显示 60 稳定 苹果A12 2560 * 1440, 40mbps hevc硬解 未显示 60 稳定 macbookpro 2016 2560 * 1440, 40mbps avc硬解 6ms 60 稳定,风扇狂转 macbookpro 2016 2560 * 1440, 40mbps hevc硬解 5ms 60 稳定,风扇狂转 gtx750 2560 * 1440, 40mbps avc硬解 1ms 60 稳定,显卡占用80% gtx750 2560 * 1440, 40mbps hevc硬解 1ms 60 稳定,显卡占用80% 测试截图gtx650在2k60帧下经常彪到100%占用从而掉帧,1080P可以畅玩

使用软件解码时候,CPU占用高,GPU空载

amd r9 270x在1080P下,负载明显比 gtx650 高,说明 amd NO!

gtx750,最后请出我们的冠军,恰好完美胜任2k60的工作

降低码率是否能提升性能?无改善

实测下来gtx无法硬解2k60,懒得换显卡,于是将码率从 40mbps 降低至 30bmps,毫无改善;继续降低到20mbps,图像很糊无法使用。

因此,对于性能差的设备降低码率是无意义的。

总结和建议

踩坑结论

能用硬解就用硬解,软解的性能不适合串流 小于gtx750的显卡无法解码2k60的码流 amd显卡的解码能力很差,比gtx更贵的amd的解码能力弱很多 未测试intel集成显卡,实际上intel集成显卡可能是更好的方案

Q:关于Intel集显和NVIDIA独显的个人看法

A:集显的算力水平和独显的算力水平完全不在同一个级别,因此老的独显算力可能可以吊打新的集显的算力,直观地表现在游戏画质和游戏帧率上。但是串流只看硬件解码的性能,在 NVENC/NVDEC 面世之前(大概是10系显卡前),集显和独显的解码性能可能差不多,现在的30系独显的编解码就完全吊打各种基显卡了。有些集显可以流畅地播放4K60的视频,有些电视盒子CPU性能烂但可以播放4K60的视频,有些独显却做不到,因此如果单纯是出于串流的目的,没必要追求高级的显卡。话说回来,使用集显的一般是办公用户和影音用户,使用独显的一般是游戏用户,所以前者解码水平好,后者算力高,也是说得过去的吧。

Q:关于最低性能要求

A:N卡,gtx750,毋庸置疑,经过了实践验证。集显的性能要求确实难倒我了,只测试过搭载了 "UHD 630" 的 i7-8700,2k60视频性能完全过剩,占用25%左右。丐一点的 "HD 630" 或 "HD 610"有人测试2k视频只有十几帧(链接 https://baijiahao.baidu.com/s?id=1764072653197693511&wfr=spider&for=pc&searchword=g4560%20%E5%88%86%E8%BE%A8%E7%8E%87,性能完全不够,而 G4560 和 7代i3 基本差不多估计都不行,估计8代i3就够用了。如果再给我一次机会,我可能就直接买了8代i3的板u套装回来,不买显卡了。

Q:关于码率和带宽。

A:40mbps的码率大概能吃到30-35M的带宽,根据自己的运营商和测速情况来配置码率。例如浙江电信承诺的上行带宽是30,配40mbps差不多。如果发现略有卡顿,可以从40mpbs的码率降低到35mbps,会有画面撕裂和模糊,这个问题只有加钱才能解决。

Q:关于选择 AVC 还是 HEVC。

A:编码:AVC 显卡占用27%,HEVC 显卡占用17%;解码:AVC略慢于HEVC。其实差不多,开哪个无所谓。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有