# 單幀 Video (Photo) 處理選型測試報告

**作者**：M4  
**日期**：2026-05-07  

---

## 測試目的

驗證將照片（JPEG/PNG）視為單幀 video 處理的可行性。

---

## 測試環境

| 項目 | 值 |
|------|-----|
| 測試機器 | M4 (Mac Mini) |
| Playground | port 3003 |
| 測試照片 | `animal.jpg` (1920x1280)、`people.jpg` (2048x3078) |

---

## 測試結果

### 1. 註冊（Registration）

| 格式 | 結果 | type | frames | fps |
|------|------|------|--------|-----|
| **JPEG** (.jpg) | ✅ 成功 | `video` | 1 | 25.0 |
| **PNG** (.png) | ✅ 成功 | `video` | 0 | 25.0 |
| MP4 短片 | ✅ 成功 | `video` | 475 | 60.0 |

JPEG 被 ffprobe 識別為 1 幀 mjpeg video，PNG 為 0 幀。

### 2. 處理器（Processors on animal.jpg）

| Processor | 結果 | 耗時 | 說明 |
|-----------|------|------|------|
| **YOLO** | ✅ **Success** | ~30s | 1 chunk, 1 frame — 完整運作 |
| **ASR** | ✅ **Success** | ~1s | 無音軌，快速回傳 empty |
| **CUT** | ✅ **Success** | ~1s | 1 幀無 scene cut |
| **Face** | ❌ Failed | — | `swift_face` 無法直接開啟 JPEG（`Error: Cannot Open`） |
| OCR | ❌ Failed | — | script 不支援圖片格式 |
| Pose | ❌ Pending | — | 可能類似 Face 問題 |
| ASRX | ⏳ Pending | — | 依賴 ASR |

### 3. Face Detection — 解法驗證

**照片 → ffmpeg → 1 幀 mov → swift_face** ✅

| 照片 | 格式轉換 | 結果 |
|------|---------|------|
| `animal.jpg` (無臉) | `ffmpeg -i animal.jpg -vframes 1 animal.mov` | 0 faces ✅ |
| `people.jpg` (有人) | 同上 | **1 face** ✅ (bbox 761x743, conf 0.84) |

**關鍵發現**：`swift_face` 使用 Apple Vision Framework，不吃 JPEG 直接輸入，但吃單幀 MOV。轉換後人臉偵測正常運作。

---

## 結論

| 項目 | 支援度 | 處理方式 |
|------|--------|---------|
| **註冊** | ✅ 可直接註冊 | ffprobe 自動判定為 1 幀 video |
| **YOLO 偵測** | ✅ 可直接用 | 讀取 1 幀 image2 格式 |
| **ASR / CUT** | ✅ 自動跳過 | 無音軌/1 幀 → 空結果 |
| **Face 偵測** | ✅ **需轉換** | JPEG → ffmpeg → 1 幀 MOV → swift_face |
| **OCR** | ❌ 待確認 | script 需調整支援圖片 |
| **Pose** | ❌ 待確認 | 可能需類似 Face 的轉換 |

## 建議

Face processor 增加 JPEG/PNG 前置轉換：

```
if input is image file:
    ffmpeg -i input.jpg -vframes 1 /tmp/single.mov
    swift_face /tmp/single.mov ...
else:
    swift_face input.mp4 ...
```

此修改可讓照片的人臉偵測、YOLO、縮圖全部無縫運作。
