公司的需求,实现一个安卓端的远程控制,就是一个手机控制另一台手机(像华为小米之类的厂商都已经实现了),我负责后端的方案。
一开始我想通过 UDP 打洞来实现,但据公司的人说某种类型下的 NAT 会导致打洞无效,所以需要服务器中转视频流。
按我对这个问题的理解,中转数据的实现不难,码率调低的话宽带应该只需要 2MB 左右(基于我看直播的体验),而且用户也不会很多,服务器不需要硬盘 IO,只需要转发数据所以性能应该不会是问题。
但据了解,传送这样的实时数据应该是需要用 UDP,避免 TCP 的重传机制造成的延迟,但使用 UDP 来容忍丢包的话,我不知道安卓端能不能实现播放缺少一定数据的视频(主要是公司安卓开发水平不怎么样),用 tcp 的话,需要改用 QUIC 之类的协议进行加速?
后端用 java 写的话,应该是要用 netty 、vertx 之类的网络框架?不再使用 spring boot ?有什么开源项目可以参考参考?
1
PUBG98k 2021-03-04 18:35:59 +08:00
还需要 root
|
2
PUBG98k 2021-03-04 18:36:57 +08:00
TCP 中转 + UDP 打洞.
但是手机的移动网络,基本上打洞成功率很低. 在 PC 上比较容易打洞成功. |