OPEN LAB 作品展示

ZEN Scout 幀探

每一球,都找得到那一幀

幀是影像的最小單位;幀探,就是幫剪接師找到那一幀的球探。

輸入「球員+動作」,直接找到那一球在每一台攝影機的第幾秒——把一整季的多機位比賽素材,變成剪接師查得到的資料庫。

線上體驗是唯讀範例:1 場比賽、49 個事件、115 段片段(FX3/A7R V/ZR 三個機位)。

01要解決的問題

一支職業籃球隊一季打幾十場比賽,每場有好幾台攝影機同時拍,一場就是數百支素材檔。剪精華、做社群影片時,最常見的需求是「找某一位球員的某一球」——例如某人的三分球、某一次抄截。

數十場一季的比賽,素材分散在多顆硬碟
數百支每場多機位素材,檔名只是流水號
靠記憶過去只能憑印象、一支一支拖時間軸找

更麻煩的是:攝影機錄的是 HEVC 格式,Windows 檔案總管連縮圖都出不來;每台相機的時鐘也不準,同一個瞬間在不同機位的檔案裡位置都不一樣。

02系統做了什麼

摘自系統的總覽與生產線技術文件,用一般人看得懂的話說明。

  1. 每顆素材碟自己帶索引自動掃出每支影片的長度、解析度、編碼、拍攝時間,用顯示卡抽縮圖和九宮格預覽;碟插到哪台電腦,索引就跟到哪台。
  2. 瀏覽器裡的操作台逐層瀏覽、滑過縮圖預覽、直接播放(瀏覽器播不動的格式會即時轉檔),加標籤、評分、備註,把要用的素材收進「收集籃」批次處理。
  3. 比分板辨識+聯盟比賽紀錄=球賽事件逐秒讀轉播畫面上的比分板(節次、比賽時鐘、比分),再對上聯盟公布的逐球紀錄(誰得分、誰助攻、誰抄截)。紀錄告訴我們「誰做了什麼」,畫面告訴我們「什麼時候」。
  4. 多機位對時把每一台攝影機的時間對到同一條時間軸,所以每個球賽事件都能直接指到各機位檔案的第幾秒,也能一鍵找「同一時刻的其他機位」。
  5. 訪談逐字稿把受訪片段的語音轉成文字並統一成繁體,講過的話也能搜尋、點一下就跳到那一句。
  6. 跨碟搜尋,同事和手機也能用所有硬碟的索引彙整成一個中央索引,素材上架到公司儲存伺服器後,同事用唯讀版就能查;出門在外也能用手機查。
  7. 直接交給剪接選好的片段可匯出剪接軟體用的時間軸檔(FCPXML)、產生代理檔、複製到收集碟,或一鍵送進 DaVinci Resolve 的媒體池。
系統架構圖 素材碟經過索引與縮圖,結合比分板辨識與聯盟逐球紀錄產生球賽事件,再由搜尋與操作台使用,最後送進 DaVinci Resolve。素材另外上架到公司儲存伺服器保存與共用。 素材碟 各機位原始檔(FX3/A7R V/ZR …) 公司儲存伺服器 素材上架、共用 索引/縮圖 長度・編碼・拍攝時間・九宮格預覽 比分板辨識 逐秒讀轉播畫面 節次・時鐘・比分 →「什麼時候」 聯盟逐球紀錄(PBP) 誰得分・誰助攻・誰抄截 →「誰做了什麼」 球賽事件 每一球對到各機位檔案的第幾秒 (多機位對時) 搜尋/操作台 單碟操作台・跨碟中央索引・同事唯讀版 手機查詢・AI 透過 MCP 查詢 送進剪接 DaVinci Resolve 媒體池・FCPXML・代理檔
系統架構:黃框是這套系統最核心的部分(把「誰做了什麼」和「什麼時候」接起來)。

03AI 的角色

開發面:不寫程式的人做出整套系統

  • 整套系統由不寫程式的影像工作者,用 Claude Code 協作開發。
  • 開發者負責定義問題、決定規則、驗收結果;AI 負責寫程式、跑測試、整理文件。
  • 這個展示網站本身也是同樣方式做的:資料匯出、影片切片、機敏資訊掃描、自動測試都由 AI 執行,開發者逐輪審核。

功能面:AI 在系統裡做的事

  • 比分板辨識:逐秒讀轉播畫面上的節次、時鐘與比分,作為對時的錨點。
  • 語音轉錄:用 WhisperX(Whisper large-v3 模型)把訪談轉成可搜尋的逐字稿。
  • MCP 素材庫查詢:透過 MCP(Model Context Protocol),讓 AI 助理直接用一句話查詢素材庫、推送候選片段到操作台。

04線上體驗

範例資料是 2026-27 例行賽第 2 場 vs 國王:1 場比賽、49 個事件、115 段片段。可以用球員、事件類型、節次搜尋,點卡片播放,多機位的事件可以切換 FX3/A7R V/ZR,切換時會停在同一個比賽瞬間。

05Demo 影片

影片連結待補 雲端無法展示的部分(比分板辨識、機位對時、送 Resolve)會在影片中實際操作。

06程式庫

GitHub:foreversun66-collab/zen-scout

07完成狀況與限制

08使用的開源工具與服務

依程式實際載入的套件與呼叫的外部程式整理。授權欄依本機安裝的套件資訊(套件中繼資料、隨附的授權檔、ffmpeg -L)查核;本機查不到的寫「未確認」。

名稱用途授權
FFmpeg/FFprobe讀取影片資訊、抽縮圖與九宮格、即時轉檔播放、產生代理檔、切展示片段GPL v3 或更新版(本機版本)
SQLite每顆碟的索引與標註資料庫(Python 內建)未確認
Python整套系統的主要語言PSF License Version 2
Flask、Werkzeug操作台、中央索引、寫入服務的網頁後端BSD-3-Clause
OpenCV比分板畫面的影像比對與判讀Apache 2.0
NumPy比分板判讀的數值運算BSD-3-Clause AND 0BSD AND MIT AND Zlib AND CC0-1.0
WhisperX訪談語音轉逐字稿BSD-2-Clause
faster-whisperWhisperX 使用的語音辨識引擎MIT
Whisper large-v3 模型(faster-whisper 格式)語音辨識模型未確認
wav2vec2 中文對齊模型把逐字稿對到精確的時間點未確認
OpenCC逐字稿簡繁轉換Apache License 2.0
MCP Python SDK讓 AI 助理透過 Model Context Protocol 查詢素材庫MIT
httpx各服務之間的連線BSD-3-Clause
Playwright抓取聯盟官網的逐球紀錄Apache-2.0
gspread讀取舊賽季的影音資料庫試算表MIT
google-auth試算表讀取的身分驗證Apache 2.0
Robocopy把選好的素材複製到收集碟Windows 內建(Microsoft,隨 Windows 授權)
Git開發用:版本管理GPL v2
Node.js開發用:檢查前端程式語法、部署工具未確認
Wrangler(Cloudflare)把這個展示網站部署到 Cloudflare PagesMIT OR Apache-2.0
Cloudflare Pages這個展示網站的主機不適用(線上服務,依其服務條款)
DaVinci Resolve(腳本介面)一鍵把片段送進剪接軟體的媒體池商用軟體(Blackmagic Design 最終使用者授權合約)
TPBL 聯盟比賽紀錄逐球紀錄(PBP)的資料來源不適用(線上資料來源,依其使用條款)
Google 雲端硬碟、Google Apps Script索引快照與發佈、手機查詢頁不適用(線上服務,依其服務條款)
Claude Code/Claude(Anthropic)開發協作;AI 助理透過 MCP 查詢素材庫不適用(線上服務,依其服務條款)