Update README.md with complete documentation
This commit is contained in:
103
README.md
103
README.md
@@ -6,10 +6,12 @@
|
|||||||
|
|
||||||
- 多格式媒體播放(視頻、音頻、圖片)
|
- 多格式媒體播放(視頻、音頻、圖片)
|
||||||
- Frame-精確的視頻控制
|
- Frame-精確的視頻控制
|
||||||
- Markdown / PDF / HTML 檢視
|
- ASR 字幕顯示(可開關)
|
||||||
- YouTube URL 直接播放
|
- YOLO 檢測框疊加(可開關)
|
||||||
|
- Chunk 導航標記(可開關)
|
||||||
|
- Zoom/Pan 畫面控制
|
||||||
|
- 自然語言搜尋
|
||||||
- 與 momentry_core 進度監控
|
- 與 momentry_core 進度監控
|
||||||
- Database 查詢功能
|
|
||||||
|
|
||||||
## 安裝依賴
|
## 安裝依賴
|
||||||
|
|
||||||
@@ -33,23 +35,57 @@ cargo build --release
|
|||||||
# 基本運行
|
# 基本運行
|
||||||
cargo run
|
cargo run
|
||||||
|
|
||||||
# 開啟檔案
|
# 開啟視頻
|
||||||
cargo run -- --file video.mp4
|
cargo run -- --video "/path/to/video.mov"
|
||||||
|
|
||||||
|
# 開啟視頻 + ASR 字幕
|
||||||
|
cargo run -- \
|
||||||
|
--video "/Users/accusys/test_video/Old_Time_Movie_Show_-_Charade_1963.HD.mov" \
|
||||||
|
--asr "/Users/accusys/momentry_core_0.1/output/39567a0eb16f39fd.asr.json" \
|
||||||
|
--yolo "/Users/accusys/test_video/Old_Time_Movie_Show_-_Charade_1963.HD.yolo.json"
|
||||||
|
|
||||||
# 指定窗口大小
|
# 指定窗口大小
|
||||||
cargo run -- --width 1280 --height 720 --file video.mp4
|
cargo run -- --width 1280 --height 720 --video video.mp4
|
||||||
```
|
```
|
||||||
|
|
||||||
## 命令
|
## 快捷鍵
|
||||||
|
|
||||||
| 命令 | 說明 |
|
| 快捷鍵 | 功能 |
|
||||||
|------|------|
|
|--------|------|
|
||||||
| `play` | 播放 |
|
| `Space` | 播放/暫停 |
|
||||||
| `pause` | 暫停 |
|
| `←` / `→` | 上一幀/下一幀 |
|
||||||
| `stop` | 停止 |
|
| `Shift+←/→` | 後退/前進 1 秒 |
|
||||||
| `seek <frame>` | Frame seek |
|
| `S` | 開關字幕 |
|
||||||
| `seek <ms>ms` | Time seek |
|
| `Y` | 開關 YOLO 疊加 |
|
||||||
| `+` / `-` | Zoom in/out |
|
| `C` | 開關 Chunk 標記 |
|
||||||
|
| `M` | 靜音 |
|
||||||
|
| `+` / `-` | 放大/縮小 |
|
||||||
|
| `0` | 重置縮放 |
|
||||||
|
| `R` | 重置視圖 |
|
||||||
|
| `F` | 全屏 |
|
||||||
|
| `[` / `]` | 上一塊/下一塊 |
|
||||||
|
| `/` | 開啟搜尋 |
|
||||||
|
| `Esc` | 關閉面板 |
|
||||||
|
|
||||||
|
## 命令列參數
|
||||||
|
|
||||||
|
```bash
|
||||||
|
-v, --video <PATH> 視頻文件路徑
|
||||||
|
-a, --asr <PATH> ASR JSON 文件路徑
|
||||||
|
-y, --yolo <PATH> YOLO JSON 文件路徑
|
||||||
|
-w, --width <N> 窗口寬度 (default: 1280)
|
||||||
|
-h, --height <N> 窗口高度 (default: 720)
|
||||||
|
--fullscreen 全屏模式啟動
|
||||||
|
--locale <LANG> UI 語言 (en, zh-TW)
|
||||||
|
```
|
||||||
|
|
||||||
|
## 測試數據
|
||||||
|
|
||||||
|
```bash
|
||||||
|
VIDEO="/Users/accusys/test_video/Old_Time_Movie_Show_-_Charade_1963.HD.mov"
|
||||||
|
ASR="/Users/accusys/momentry_core_0.1/output/39567a0eb16f39fd.asr.json"
|
||||||
|
YOLO="/Users/accusys/test_video/Old_Time_Movie_Show_-_Charade_1963.HD.yolo.json"
|
||||||
|
```
|
||||||
|
|
||||||
## 開發
|
## 開發
|
||||||
|
|
||||||
@@ -70,3 +106,40 @@ cargo test
|
|||||||
- **桌面**: tao + wry
|
- **桌面**: tao + wry
|
||||||
- **視頻**: SDL2 + FFmpeg
|
- **視頻**: SDL2 + FFmpeg
|
||||||
- **前端**: HTML/CSS/JS (WebView)
|
- **前端**: HTML/CSS/JS (WebView)
|
||||||
|
- **緩存**: LRU (YOLO frame cache)
|
||||||
|
|
||||||
|
## 服務連接
|
||||||
|
|
||||||
|
| 服務 | 地址 |
|
||||||
|
|------|------|
|
||||||
|
| PostgreSQL | localhost:5432 |
|
||||||
|
| Redis | localhost:6379 |
|
||||||
|
| Qdrant | localhost:6333 |
|
||||||
|
| API Server | 127.0.0.1:3002 |
|
||||||
|
| Ollama | localhost:11434 |
|
||||||
|
|
||||||
|
## 項目結構
|
||||||
|
|
||||||
|
```
|
||||||
|
momentry_playground/
|
||||||
|
├── Cargo.toml
|
||||||
|
├── src/
|
||||||
|
│ ├── main.rs # 入口
|
||||||
|
│ ├── lib.rs # 模組導出
|
||||||
|
│ ├── config.rs # 命令列解析
|
||||||
|
│ ├── player/ # 視頻播放
|
||||||
|
│ │ ├── video.rs # 播放控制
|
||||||
|
│ │ ├── ffmpeg.rs # FFmpeg 解碼
|
||||||
|
│ │ ├── renderer.rs # SDL2 渲染
|
||||||
|
│ │ └── state.rs # 播放狀態
|
||||||
|
│ ├── overlay/ # 疊加層
|
||||||
|
│ │ ├── asr.rs # ASR 載入
|
||||||
|
│ │ └── yolo.rs # YOLO 載入 (LRU cache)
|
||||||
|
│ └── web/ # WebView
|
||||||
|
│ └── bridge.rs # JS <-> Rust IPC
|
||||||
|
├── web/
|
||||||
|
│ ├── index.html # 主 UI
|
||||||
|
│ ├── styles.css # 樣式
|
||||||
|
│ └── app.js # 前端邏輯
|
||||||
|
└── AGENTS.md # 開發文檔
|
||||||
|
```
|
||||||
|
|||||||
Reference in New Issue
Block a user