暑假,摸出放在盒子里很久的手柄,打算在B站更新一下游戏视频。我一直用安卓手机玩 Minecraft ,但是录屏的时候明显会有掉帧的现象,而且生成的文件特别吃存储空间。于是想将手机屏幕实时推流到电脑上,用电脑录屏。之前没有找到免费的解决方案,而且很多无线推流的方案不适用于游戏这类对录屏帧率和码率要求较高的场景。
无意找到了开源的替代方案:scrcpy。
录制效果示例:杂乱的起床战争集锦。不过由于剪辑软件和视频平台的二压,这个视频的质量比原始录屏要差一些。
它很符合我的预期需求,因此写这篇文章来介绍一下使用体验。
使用方法很简单。下载发行包,用 ADB 连接上手机,USB 或者网络连接都可以,这里不多赘述。然后在目录中运行:
./scrcpy
它会创建一个窗口显示实时画面。另外还支持反向控制,即通过这个窗口控制手机,鼠标键盘都可以使用。
也自带录制功能:
./scrcpy -r output.mp4
加上 "-N" 选项可以关闭预览画面,仅录屏。
以及很多其他配置选项,查看帮助:
./scrcpy --help
这个项目在文档中宣传的是:
It focuses on:
- lightness: native, displays only the device screen
- performance: 30~120fps, depending on the device
- quality: 1920×1080 or above
- low latency: 35~70ms
- low startup time: ~1 second to display the first image
- non-intrusiveness: nothing is left installed on the Android device
- user benefits: no account, no ads, no internet required
- freedom: free and open source software
我亲自部薯亲自试验,实测结果非常令人满意。它确实完美地表现出了介绍中的 每一点 特性。
测试条件:视频流质量为等效 720P ,60 FPS,码率不低(动态的游戏画面)。推流手机通过 Wi-Fi 5(802.11ac)无线连接到局域网,接受端电脑为等效 100Mbps 有线连接。
测试结果:无线推流时,传输速率为 8 Mbps。延迟比大部分无线推流小得多,肉眼估计的话比 Miracast 投屏到电视的延迟小,可以勉强不看手机屏幕玩 Phigros ,虽然打法多少有点糊(不是指画质) ;不过玩 Minecraft ,尤其是 PvP 时延迟就无法满足需求了,当副显示屏肯定不必想了。录屏质量很不错,除了码率有点虚高,和传输速率基本一致,也就是说每 1 s 的视频占用 1 MB,不过这应该是实时录屏的通病,毕竟视频没有压制过。
总的来说,用来录屏,再合适不过了。唯一可惜的一点,没有声音。我知道这肯定不是技术限制,某些软件是可以实现同时录制媒体声音的。不懂 Android 开发,有无可能是因为通过 ADB 直接运行的可执行文件无法调用某些特定的接口呢?