cueprompter

CuePrompter — iPhone 畫中畫提詞器

Product Requirements Document · v0.1 · 2026-09-13


1. 一句話講清楚

Safari 開嘅網頁提詞器:貼稿、set 總秒數、撳一下,個稿就變成一個浮喺 Apple 原生相機 app 上面嘅畫中畫(Picture in Picture)小窗,自動碌字。你用返平時嘅相機拍片,浮窗唔會入片。


2. 背景同問題

想要:一路用原生相機拍、一路見到自動碌嘅字。

iOS 限制:任何 app 都唔可以喺相機 app 上面疊自己嘅 UI。唯一系統級做法係 畫中畫浮窗:一個播緊片嘅小窗,可以浮喺任何 app(包括相機)上面、拖去任何位置、pinch 縮放、撳暫停。App Store 上所有「floating teleprompter」app(Teleprompt Overlay、FloatText、Beast Floating Teleprompter 等)都係用呢個方法。


3. 解決方案

純網頁 app,唔使 Xcode、唔使 Apple Developer account。

  1. 喺 Safari 貼稿、set 秒數
  2. App 將碌字畫面預先 render 成一條 MP4 短片(幾秒鐘)
  3. 撳「開始」→ Safari 將條片放入畫中畫浮窗
  4. 切去相機 app,將浮窗拖到前鏡頭附近,撳錄影,望住浮窗讀

點解要預先 render 成影片,而唔係即時碌字? iOS Safari 對「即時串流」(canvas 或 MediaStream)入畫中畫嘅支援一直唔穩定(WebKit bug 262479 / 268732 / 280627,iOS 17–18 會拋 NotSupportedError,尤其係「加到主畫面」模式)。真正嘅影片檔就係普通 <video>,畫中畫一定得。

代價:改速度要重新 render 一次(用 WebCodecs 大約幾秒),唔可以碌緊中途即時改快慢。可以喺浮窗撳暫停 / 繼續 / 倒退 15 秒補救。


4. 目標(第一版)

  1. 唔使裝任何嘢,Safari 開 URL 就用得
  2. 由貼稿到開始拍片,30 秒內完成
  3. 速度用「總秒數」調校,app 按字數自動估一個合理預設
  4. 浮窗可以擺喺前鏡頭附近,眼神唔會明顯望開
  5. 廣東話(繁體)同英文都排版正常,中英夾雜冇問題

5. 非目標(第一版唔做)


6. 核心用戶流程

Safari 開 CuePrompter
  → 貼稿(或揀返上次嘅稿)
  → 調校:總秒數、字體大小、前置倒數
  → 撳「預覽」睇吓速度啱唔啱,唔啱改完再 render
  → 撳「開始 PiP」→ 浮窗出現,先顯示倒數(預設 5 秒)
  → 切去相機 app(swipe up 或 lock screen 開相機)
  → 將浮窗拖到頂部前鏡頭附近,pinch 放大
  → 撳錄影,望住浮窗讀稿
     (需要時撳浮窗:暫停 / 繼續 / 倒退 15 秒)
  → 稿碌完,浮窗顯示「— 完 —」並停住
  → 停錄。想重拍:返 Safari 撳「重播」即刻再嚟

7. 功能需求

P0 — 第一版必須有

稿件輸入

速度控制

前置倒數

結尾停留

Render 成 MP4

進入畫中畫

預覽

文字排版

P1 — 應該有

P2 — 之後先做


8. 設定一覽

設定 預設 範圍
總時長 按字數自動估算 10–600 秒
前置倒數 5 秒 0–15 秒
結尾停留 10 秒 0–30 秒
字體大小 細 / 中 / 大
影片比例 4:3 16:9 / 4:3 / 1:1
鏡像 開 / 關

9. 技術方案

架構:純靜態網頁,一個 index.html + JS,冇 build step。Host 喺 GitHub Pages 或 Cloudflare Pages,Safari 開 URL。

文字 render

編碼

播放 & PiP

資料

唔用 standalone PWA 模式


10. 已知風險 & 要先驗證(Phase 0 Spike)

# 風險 點驗證 如果唔得
1 Safari 觸發嘅 PiP 浮窗喺相機 app 上面會唔會顯示 真機實測 轉原生 app 方案(見第 13 節)
2 純影像、冇聲軌嘅 MP4 可唔可以入 PiP 真機實測 加一條靜音 AAC 軌(Safari 26 有 AudioEncoder)
3 WebCodecs 喺 iOS Safari 嘅實際 render 速度 量 60 秒稿 render 時間 降 fps 到 15,或者降解像度
4 PiP 窗最大尺寸下每行放到幾多字先睇得清 真機實測三種比例 調整預設字體同比例
5 autoPictureInPicture 未必每部機都得 真機實測 只靠手動撳掣

11. 成功指標


12. Phase 計劃

Phase 內容 預計
0 一頁 spike:硬 code 一段稿,驗證第 10 節第 1–4 項 半日
1 P0 全部 + 簡單 UI 1–2 日
1.5 P1 1 日
2 Notion 整合 之後

13. 替代方案(唔推薦,記錄原因)

原生 Swift app + PiP(AVSampleBufferDisplayLayer 即時 render) 可以即時改速度、唔使預 render。但要裝 Xcode;免費 Apple ID 每 7 日要重新裝一次;長期用要 US$99/年 developer account。將來如果想要語音跟讀,先值得轉呢條路。

自己拍片嘅 web app(getUserMedia + MediaRecorder) Yolanda 明確想用原生相機。而且 Safari 錄影畫質通常上限 1080p,切 app 會斷錄,存片要經 share sheet。


參考