React Native 实时动捕原生模块
是挑战杯项目中的一部分,因老师要求无法开源。
关键点:
- 使用 kotlin 编写原生模块,将视频流使用 ExoPlayer 硬件解码播放 → VideoFrameProcessor → ImageReader → Bitmap → Mediapipe 实现实时推理
- 将推理结果返回给 RN 侧,进行可视化展示
- 设备不支持 ExoPlayer 时,自动回退降级按设定 FPS 间隔使用 retriever.getFrameAtTime() 软件解码取帧推理,保证兼容性。
- 降级模式由于速度较慢,采用异步检测,结果通过事件发回 JS ,用 ConcurrentHashMap 保存时间戳→帧索引,后续播放时直接从缓存中获取。