无人直播硬改系统-技术分析

发布时间:2026/7/11 3:26:30
无人直播硬改系统-技术分析 前段时间接触到了部分手机的无人直播系统。说是无人直播实际上应该算是视频转录播放功能。并不是完全的无人操作还是需要有人录制视频然后操作手机播放从想法上大概也能猜到是使用了 mp4 的帧去替换摄像头的帧从而实现视频流的替换做到无人直播。可以在线交流的一个服务我的地球号无人直播系统实现原理实际上就是用 mp4 的帧替换掉 Camera 的视频帧Camera 视频流分析做 Android 开发的都知道要想实现视频直播需要调用Camera预览才能获取到视频流数据如果使用旧的 Camera Api那么调用的是Camera.open()方法获取到Camera 对象设置回调视频流数据会通过回调返回是byte[]数组如果使用新的 Camera2 APi那么需要构造CaptureRequest经过许多操作从而获取到每一帧的Image对象视频流就在每一个Image对象中用户自行编写代码可以获取到byte[]数组如何实现视频流替换经过上面分析可以知道每一帧视频流都是使用回调从而提供给 APP 的那么能否修改这个回调在提供给 APP 前将里面的byte[]替换掉呢其实是可以的实现方式主要有两种一种是使用 Xposed 框架 Hook 系统在回调执行时替换xposed 框架实现方式有可能会被检测到从 app 角度出发可以检测手机上是否安装 Xposed 框架、检测当前堆栈是否有 Xposed 的栈信息等等。另一种是修改系统 framework 在系统层面实现视频流的替换这里简单介绍第二种定制系统实现视频流替换如果要自行定制系统那么选择一款开源的系统必不可少。目前开源使用比较广泛的是Lineage OS。魔趣系统也有但时至今日(2021),还在频繁更新的是Lineage OS既然第一步思路已经明确在 Framework 的 Camera 中替换 byte[] 数组。那么如何获取 mp4 的 byte[] 数组如果使用系统原生提供的 Api那么可以使用MediaCodecMediaCodec 解码视频时一般要求传入SurfaceView,实现视频画面展示实际上 MediaCodec 可以获取Image对象自行从Image对象中取出 byte[] 数组即可。然后在合适的地方替换掉视频流需要考虑的兼容问题当然大致思路如此。但实际上视频流有多种格式NV21YUV420等等。对于这些不同的视频流格式需要自行转换。实际上实现定制系统替换视频流的步骤对于个人开发者而言还是比较麻烦的首先需要使用 Ubuntu 编译开源系统然后修改 Framework解码 mp4 替换视频流。简单的替换当然可以实现。但如果使用系统层面替换视频流那么需要处理的问题就比较多了例如视频帧率、视频分辨率、视频流的格式、Mp4 解码格式、App 兼容性错误处理等等结尾目前有多款无人直播系统小米6红米6 pro红米 note8xxx