# 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模式**

**2. 切换cover模式**
点击设置图标
—》
选择cover模式
在cover模式下最下方会显示切换视频按钮,可以切换两个视频查看,默认为左边视频
**3. 逐帧播放**
逐帧播放视频必须先暂停视频,然后点击设置右边的
箭头可以进行视频下一帧的播放
---
## 已知问题
1. 未支持音频的解码播放
2. 改帧率的视频对比可能会有相同画面帧对不齐
---
## 后续优化方向
- [ ] 支持更多视频格式
- [ ] 添加音频同步
- [ ] 支持相似帧自动对齐