d6ebbc8c3a19a9132ff82cea03e6cf20426c6127
video_register
影片元數據註冊服務
功能
- 讀取
.probe.json文件(由 video_probe 生成) - 根據檔案路徑自動生成 UUID 作為檔案 ID
- 將影片元數據註冊到 PostgreSQL 資料庫
- 支援 SQL 查詢搜尋影片元數據
- 註冊後將檔案複製為 UUID 命名(測試期間保留原始檔)
安裝
pip install -r requirements.txt
配置
在專案根目錄創建 .env 文件:
DATABASE_URL=postgresql://accusys@localhost:5432/video_register
使用方式
CLI 命令
註冊影片
python cli.py register <probe.json 路徑>
選項:
--dry-run: 測試模式,不實際複製檔案
範例:
python cli.py register ../test_video/Old_Time_Movie_Show_-_Charade_1963.HD.probe.json
python cli.py register ../test_video/Old_Time_Movie_Show_-_Charade_1963.HD.probe.json --dry-run
驗證已註冊的影片
python cli.py verify <UUID>
範例:
python cli.py verify 1636719d-c31f-78ac-f1dd-8ab0b0b36c66
API 服務
啟動 FastAPI 服務:
uvicorn app.main:app --reload
API 文件:http://localhost:8000/docs
probe.json 格式
輸入的 probe.json 必須包含 video_path 欄位:
{
"video_path": "/absolute/path/to/video.mov",
"probed_at": "2026-03-10T23:26:04",
"format": { ... },
"video_stream": { ... },
"audio_streams": [...],
"subtitle_streams": [...]
}
UUID 生成規則
UUID 透過 SHA-256 雜湊檔案路徑生成,確保:
- 相同路徑產生相同的 UUID
- 可從 UUID 反向計算驗證
資料庫結構
videos 表
id: UUID (主鍵)file_path: 原始檔案路徑file_name: 檔案名稱(不含副檔名)file_extension: 副檔名file_size: 檔案大小format_name: 格式名稱duration: 時長title: 標題artist: 藝術家
video_streams 表
video_id: 關聯的 videos IDcodec_name: 編碼名稱width,height: 解析度color_space: 色彩空間color_range: 色彩範圍
audio_streams 表
video_id: 關聯的 videos IDcodec_name: 編碼名稱channels: 聲道數sample_rate: 取樣率language: 語言
subtitle_streams 表
video_id: 關聯的 videos IDcodec_name: 編碼名稱language: 語言
Description
Languages
Python
100%