# 影片金句想發文？五句字幕半秒拼成一張圖｜native-subtitle-quote-image 實測

- 網址：https://blog.valenvan.uk/posts/chengyi-ai-native-subtitle-quote-image.html
- 發布日期：2026-11-06
- 測試設備：Mac mini M4 Pro（12 核、64GB）
- 專案：chengyi-ai/native-subtitle-quote-image（https://github.com/chengyi-ai/native-subtitle-quote-image），MIT 授權
- 測試版本：v2.10.3（2026-11-03 更新的 main 分支）
- 實測影片：https://www.youtube.com/shorts/4zVDIoKniCA

## 重點摘要

- 在 Mac mini M4 Pro 上，安裝 Pillow 與 imageio-ffmpeg 約 3 秒，不用另外裝 ffmpeg。
- 用自製 36 秒短片測：字幕燒在畫面裡的原生模式，5 個時間點約 0.33 秒拼成一張 1280×1211 的圖。
- 腳本模式把自己寫的 5 句台詞畫到畫面上，約 1 秒出 1440×1920 的圖；沒有中文字型會直接拒絕，要用 --font 指定。
- 直式 3:4 會裁掉畫面左右，我左上的「第1幕」標題成品上只剩一個「幕」字。
- **結論：** 常把影片台詞發成貼文的人，值得試；只用自製短片測，沒測網址下載與 AI 助理呼叫。
- **適合：** 常把影片金句、訪談台詞做成貼文長圖的人
- **不適合：** 只有播放器字幕軌、又不想自己寫台詞的人，或需要貼網址一鍵出圖的人

| 實測項目 | 結果 |
|---|---|
| 安裝相依套件 | 約 3 秒 |
| 原生字幕模式（5 時間點） | 約 0.33 秒 |
| 腳本字幕模式（5 句） | 約 1 秒 |
| 沒給中文字型 | 拒絕出圖 |
| 3:4 直式 | 左右被裁掉 |

看到一支影片裡有幾句話特別有感，想做成貼文圖。你會怎麼做？多半是暫停、截圖、再截一張、對齊字幕、丟進修圖軟體一格一格拼。native-subtitle-quote-image 想把這段全包掉：給它一支影片和幾個時間點，它直接拼出一張長圖。這篇是我在 Mac mini M4 Pro（12 核、64GB）上實際跑的紀錄。

這是一套免費的 Python 工具（MIT 授權），本來設計成給 Codex、Claude Code 這類 AI 助理呼叫的「技能」，但倉庫裡的腳本也可以自己直接跑，我測的就是直接跑腳本。

## 我怎麼測

為了不碰別人的影片版權，我自己用 Python 做了一支 36 秒、1280×720 的短片，分成六幕，其中一支把五句台詞燒進畫面（模擬「字幕本來就在畫面裡」的影片），另一支沒有字幕。五句台詞都是我自己寫的。只測本機影片，沒測貼網址下載（要另外裝 yt-dlp），也沒測 AI 助理的呼叫流程。

## 安裝

```bash
git clone https://github.com/chengyi-ai/native-subtitle-quote-image.git
cd native-subtitle-quote-image/skills/native-subtitle-quote-image
python3 -m pip install -r requirements.txt   # 只有 Pillow 和 imageio-ffmpeg
python3 scripts/check_environment.py
```

安裝約 3 秒。imageio-ffmpeg 自帶 ffmpeg，所以不用另外裝。自檢會告訴你缺什麼：我的環境缺中文字型，所以「腳本模式」那一項標成缺失。

## 模式一：原生字幕（字幕本來就在畫面裡）

先自檢影片，再寫一個很短的設定檔，列出要截的時間點：

```bash
python3 scripts/native_subtitle_stitch.py check-source demo_burned.mp4 --min-height 720
echo '{"images":[{"title":"native","times":[4,10,16,22,28]}]}' > manifest.json
python3 scripts/native_subtitle_stitch.py render demo_burned.mp4 \
  --manifest manifest.json --out-dir out-native --band-top 0.78 --band-bottom 0.96
```

實測：整個 `render` 約 0.33 秒，輸出 1280×1211 的一張圖。第一格是完整畫面，下面接四條字幕條，字幕是直接從畫面裁下來的，沒有重新辨識或重畫。

![原生字幕模式的成品：上方完整畫面，下方四條裁下來的字幕](https://blog.valenvan.uk/img/chengyi-ai-native-subtitle-quote-image-article_1.png)

## 模式二：腳本字幕（影片沒字幕，台詞自己寫）

把台詞與時間點寫成 JSON，工具會把台詞畫到真實畫面上：

```bash
python3 scripts/native_subtitle_stitch.py render-script demo_plain.mp4 \
  --script script.json --out out-script.jpg --aspect 3:4 --width 1440 \
  --font /path/to/NotoSansTC.otf
```

約 1 秒出圖，1440×1920。

## 踩到的兩個雷

**1. 沒有中文字型就拒絕。** 我的環境沒裝中文字型，同一個指令直接回「找不到可用的中文字體；請安裝中文字體或使用 --font 指定字體文件」，不會出圖。解法：用 `--font` 指向任何一個中文字型檔（我用 Noto Sans TC）。Mac 通常有系統字型，不一定遇到。

**2. 直式 3:4 會裁掉畫面左右。** 腳本模式指定 3:4 時，主畫面會從 16:9 的影片中間裁出直式。我的第一幕標題「第1幕」在畫面左邊，結果成品上只剩一個「幕」字。所以挑時間點時，要看清楚重要的東西有沒有在中間。

![腳本模式成品：左上的標題被裁成只剩「幕」字](https://blog.valenvan.uk/img/chengyi-ai-native-subtitle-quote-image-article_2.png)

## 結果

| 項目 | 結果 |
|---|---|
| 安裝相依套件 | 約 3 秒 |
| 原生字幕模式（5 個時間點） | 約 0.33 秒，1280×1211 |
| 腳本字幕模式（5 句台詞） | 約 1 秒，1440×1920 |
| 沒給中文字型 | 拒絕出圖，要用 --font |
| 3:4 直式 | 左右被裁，邊緣文字可能不見 |

## 適合誰、不適合誰

適合常把影片台詞或訪談金句做成貼文圖的人：省下的是最煩的截圖、對齊、拼圖。不適合影片字幕只是播放器可開關的字幕軌、又不想自己寫台詞的人（原生模式只裁畫面裡已有的字）；也不適合需要一鍵貼網址就出圖的人，這部分我沒測。請只處理你有權使用的影片。

## 連結與授權

- 專案：https://github.com/chengyi-ai/native-subtitle-quote-image
- 授權：MIT
