当前位置: 首页 > news >正文

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

前段时间接触到了部分手机的无人直播系统。

说是无人直播,实际上应该算是视频转录播放功能。并不是完全的无人操作,还是需要有人录制视频,然后操作手机播放

从想法上,大概也能猜到是使用了 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,那么可以使用MediaCodec

MediaCodec 解码视频时,一般要求传入SurfaceView,实现视频画面展示

实际上 MediaCodec 可以获取Image对象,自行从Image对象中取出 byte[] 数组即可。然后在合适的地方替换掉视频流

需要考虑的兼容问题

当然,大致思路如此。但实际上视频流有多种格式:NV21YUV420等等。对于这些不同的视频流格式,需要自行转换。

实际上实现定制系统替换视频流的步骤对于个人开发者而言,还是比较麻烦的

首先需要使用 Ubuntu 编译开源系统,然后修改 Framework,解码 mp4 ,替换视频流。

简单的替换当然可以实现。但如果使用系统层面替换视频流,那么需要处理的问题就比较多了,例如视频帧率、视频分辨率、视频流的格式、Mp4 解码格式、App 兼容性,错误处理等等

结尾

目前有多款无人直播系统:

小米6

红米6 pro

红米 note8

xxx

http://www.jsqmd.com/news/1164896/

相关文章:

  • HTTP 431 错误全链路排查:从浏览器到 Nginx 再到后端的 5 个关键检查点
  • 如何识别与规避AI技术博文中的虚构项目风险
  • VisualCppRedist AIO:如何一站式解决Windows应用程序依赖库问题
  • 2026年7月研磨机/浙江滚筒式研磨机厂家推荐大全_湖州中云机械制造股份有限公司 - 行业平台推荐
  • 2026年7月最新上海雷达官方售后联系电话与客户服务中心网点地址 - 亨得利钟表维修中心
  • Arduino DHT11 数据可视化实战:ESP8266 + 0.96 OLED 显示 3 种环境指标
  • 日常图片修复、批量处理用什么工具?分享4款实用的电脑软件
  • 2026年7月山东应急逃生消防器材/应急逃生消防器材公司推荐大全_山东雨泽消防科技有限公司 - 品牌宣传支持者
  • Spring AI+MyBatis-Plus+Spring Boot生产级版本兼容指南
  • TEC-XP+ 教学机汇编实战:5个经典I/O与循环程序调试实录(附监控命令)
  • 2026年7月最新长沙泰格豪雅官方售后客户服务热线与维修网点地址汇总 - 亨得利官方服务中心
  • 零碳园区建设路径规划:从顶层设计到3阶段落地的5个关键决策点
  • 2026年7月最新哈尔滨宝玑官方售后维修服务网点地址与客服电话 - 亨得利钟表维修中心
  • 学术论文自动化处理系统:Agent驱动的知识操作系统
  • 揭秘闲鱼自动化采集:3大核心技术解锁二手市场数据宝藏
  • 成都万国回收价格查询及靠谱平台实测排行(2026年7月最新) - 天价名表回收平台
  • 当 Token 有了三层骨骼:设计 Token 语义层级设计,从原始值到语义级再到组件级
  • UE5项目规范自动化检查:Linter工具原理与工作流集成指南
  • GPT-4o在IC验证与硬件开发中的真实能力边界
  • PIC32MZ与CMT-8540S-SMT在嵌入式音频开发中的优化实践
  • 降重后格式乱成一团,有哪些真正实测靠谱的的AI智能降重工具推荐?
  • Unity游戏实时翻译实战:XUnity Auto Translator插件原理与配置指南
  • 2026年7月最新武汉宇舶官方售后客服中心地址电话及服务网点分布 - 亨得利官方服务中心
  • 苏州打离婚官司经验丰富的律师哪位好-朱庆帅律师 - 品牌排行榜
  • NBM5100A与STM32的低功耗物联网电源优化方案
  • Claude Sonnet 5智能体技术解析:从工具到自主伙伴的转变
  • 智慧树刷课插件:终极自动化学习解决方案
  • 天津百达翡丽回收价格查询及各大平台实测排行(2026年7月最新) - 诚收名表回收平台
  • 如何用OneMore插件彻底改变你的OneNote使用体验:5个必学的高效技巧
  • 2026年7月最新浪琴天津王府井购物中心维修保养服务电话 - 浪琴官方售后服务中心