# VisionDuo **Repository Path**: zhao-xiaoke/VisionDuo ## Basic Information - **Project Name**: VisionDuo - **Description**: Android端双视频对比app - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-01-06 - **Last Updated**: 2026-03-24 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## 项目简介 VisionDuo(视界双影)是一款 Android 应用,允许用户同时加载和播放两个视频,支持独立解码、同步播放、以及左右对比(window)和重叠对比(cover)两种模式。通过左右滑动可以查看视频的不同部分,支持详细的视频信息展示。 --- ## 项目架构 ### 核心组件结构 ``` VisionDuo ├── VisionDuoMainActivity (主活动) │ └── 管理整个UI和业务逻辑 │ ├── VideoExtractor (视频提取器) │ └── 负责媒体流解析和轨道提取,如果有无法提取到的通过Ffprobe-kit提取视频信息 │ ├── VideoDecoderController (解码控制器) │ └── 管理硬件解码和渲染循环 │ └── 工具类 (util/) ├── VideoChooser (视频选择器) └── TimeFormatter (时间格式化) ``` ### 架构特点 - **双视频独立解码**:两个视频在独立线程中解码,互不干扰 - **同步播放**:共享进度条控制,支持同步 seek - **TextureView 渲染**:高效的视频显示方案 - **多模式支持**:Window 模式(左右显示)和 Cover 模式(覆盖显示) --- ## 流程 ``` 选择文件(输入)——>通过Extractor(或者Ffprobe-kit)提取视频信息——>创建解码器进行解码——>通过surface渲染到TextureView——>输出 ``` --- ## 主要功能特性 ### 1. **双视频并行显示 (Window 模式)** - 左右两个视频同时显示 - 独立的触摸滑动交互 - 支持查看视频的左半部分到右半部分 ### 2. **覆盖显示 (Cover 模式)** - 单个视频全屏显示 - 通过按钮在两个视频间切换 - 适合详细对比查看 ### 3. **同步播放控制** - 统一的播放/暂停按钮 - 两个视频保持时间同步 - 支持逐帧播放 ### 4. **进度条交互** - 拖动进度条快速定位(定位到最近的I帧位置) - 实时显示当前时间 - 基于较长视频时长计算进度 ### 5. **视频信息展示** - 文件名 - 总帧数 - 视频码率 (kbps) - 时长 ### 6. **触摸交互** - 左右滑动查看视频不同区域 --- ## 使用说明 **1. 选择视频对比-默认打开为window模式** image-20260106180351763image-20260106180551438 **2. 切换cover模式** 点击设置图标 image-20260106180930607 —》image-20260106181010363选择cover模式 在cover模式下最下方会显示切换视频按钮,可以切换两个视频查看,默认为左边视频 image-20260106180807152 **3. 逐帧播放** 逐帧播放视频必须先暂停视频,然后点击设置右边的image-20260106180856423箭头可以进行视频下一帧的播放 --- ## 已知问题 1. 未支持音频的解码播放 2. 改帧率的视频对比可能会有相同画面帧对不齐 --- ## 后续优化方向 - [ ] 支持更多视频格式 - [ ] 添加音频同步 - [ ] 支持相似帧自动对齐