上提到的 scrcpy 是通过 ADB 来传输的(要么有线,要么开启无线 ADB,得在电脑上装 ADB,而且目前没有在浏览器跑的方案。),好处是可以在电脑上控制手机。
我用过最接近主描述的是 Screen Stream over HTTP ( https://play.google.com/store/apps/details?id=info.dvkr.screenstream )(GitHub: https://github.com/dkrivoruchko/ScreenStream )。这个 app 可以实现通过浏览器串流手机屏幕内容。用的是 MJPEG 。不过它目前还不支持电脑控制手机。不过既然是开源的,应该可以用 Android 7.0+ 的无障碍服务来实现模拟点击。
不过以上两者都不支持声音传输。如果要传输设备音频,可以尝试自己实现。Android 端需要 Android 10+,原理参考 sndcpy ( https://github.com/rom1v/sndcpy )。
而 Miracast 的话,则对发送、接收双端都有硬件要求。Android 4.4 – Android 5.1 都自带 Miracast 支持( Google 在 Android 6.0 的源码里面移除了它,但是部分国内厂商依然在他们的定制 ROM 里面保留了这个功能)一般只要支持 WiFi 的 Android 机的硬件都可以支持 Miracast 。而 PC 端的话,Windows 10 自带 Miracast 接收器 app “连接”。但是部分 WiFi 网卡不支持它,你可以在系统设置-系统-投影到此电脑里面打开接收功能。但需要注意的是,Win 10 自带这个接收器有个长久没修的 bug,“请求投影到此电脑”和“要求 PIN”必须设置为“每次”才能正常连接使用。Miracast 本身应该是支持在接收端控制发送端的,但是我实际经验上 Android 投屏到 Windows 时没有成功远程控制过。Miracast 的好处是支持 Android 设备音频串流。
DLNA 是投视频 /图片 /音频的协议,不适合屏幕镜像。