在 Sonic 云真机使用 Scrcpy 是一种什么样的体验

v1.3.2-release正式发布啦~
该版本上新了Scrcpy投屏,但是安卓投屏已经有MiniCap了。到底Scrcpy能带来怎样的体验呢?

以往Sonic使用的Minicap投屏

如果我们把Minicap画质压缩到80,我们可以看到投屏效果清晰度还是算高的:

然后我们看一下带宽:

很明显,清晰度达到了我们的要求,但是带宽实在是太高了,这还是我稍微压缩过的,如果是一些分辨率稍大一点的手机,可能每帧达到1M左右,会造成FPS下降,而且局域网带宽严重负荷。

于是Sonic之前使用的是Minicap官方说的方式:

Usable to very smooth FPS depending on device. Older, weaker devices running an old version of Android can reach 10-20 FPS. Newer devices running recent versions of Android can usually reach 30-40 FPS fairly easily, but there are some exceptions. For maximum FPS we recommend running minicap at half the real vertical and horizontal resolution.

压缩投屏的分辨率来获得更高的FPS,踩过不少坑之后,拿到的清晰度就是我们看到的

可以看到图片的文字都已经比较模糊,但是带宽确实降低了不少,FPS 也达到了顺畅的水准:

除此之外,我还做了丢帧,相同图片的直接不发送,其余的丢弃三分之一的帧,但是带宽还是比较高。
当然,Minicap还有一个很致命的缺点,兼容性太差了,不仅小米、vivo、LGE有兼容性问题,最新的华为P50都已经无法兼容了。

Scrcpy的提升

Scrcpy我们将socket桥接过来处理,直接发送h264裸流给前端渲染,清晰度是怎么样的呢?



可以看出来,投屏清晰度已经和Minicap最清晰的时候有得一拼了(理论上比Minicap要稍微清晰),那么他的带宽是多少呢?

对你没有看错,一帧基本不超10KB!
那么Scrcpy带来的投屏体验自然是很不错的,那为什么Sonic不直接舍弃Minicap呢?
Scrcpy也有一个缺点,就是会造成CPU功耗增加、设备发热会更严重一些,我认为这种风险应该让用户去权衡,于是将两种投屏方式都做进去,让用户可以切换着使用。

Scrcpy提供不少好的思路,iOS目前一直用wda的mjpegserver,带宽消耗和FPS都没能达到满意的程度,接下来,需要对iOS的投屏也要做一番优化了!

1 个赞

666,太强了

感谢

加油,加油

谢谢!