錄影與儲存
雲瞰 預設採本機分段錄影,可選擇掛載 115 雲端做雲端備份。本章說明錄影機制、保留策略,以及 115 接入方式。
錄影怎麼寫入
雲瞰 把每路攝影機的影像依時間切成一段段標準 MP4 檔案,每段固定 60 秒。每段寫完就是一個可以直接播放的完整檔案,進度條能立刻拖動,不需要等待任何轉檔。寫入路徑:
data/recordings/
<camera_id>/
2026-05-18_14-30-00.mp4
2026-05-18_14-31-00.mp4
2026-05-18_14-32-00.mp4
...歸檔後的路徑
archived 狀態後,會被原子 rename 到 data/recordings/_archive/<camera_id>/ 下,目錄結構和檔名完全鏡像,方便和正在寫入的 inbox 區分開來。_archive/ 前綴是慣例,uploader 的 discovery 掃描會跳過它,避免歸檔檔案被重複處理。115 雲端模式下,本機是否保留由 delete_after_upload 設定決定(預設上傳成功即刪除)。本機儲存路徑
錄影寫在 /app/data/recordings(巢狀掛載,可單獨指到大硬碟 / NAS),資料庫 / cookies / 日誌等小型狀態放在 /app/data,AI 模型已內建在映像檔裡、不會落在資料目錄。正式環境部署務必把錄影目錄指到容量充足的大硬碟,不要跟系統硬碟擠在同一個分割區——錄影寫滿會讓你的伺服器開不了機。
# 建議:錄影單獨掛一塊大硬碟 / NAS(小型狀態留在 data/)
sudo mkdir -p /mnt/recordings
# 一鍵腳本:--recordings-dir 指到大硬碟
curl -fsSL https://cdn.yun-kan.com/yunkan-install.sh | bash -s -- --recordings-dir /mnt/recordings
# 或在手動 docker run 時巢狀掛載錄影磁碟區
docker run -v $(pwd)/data:/app/data -v /mnt/recordings:/app/data/recordings ...保留策略與磁碟空間
雲瞰預設就在管這件事,不需要你去打開任何開關:給錄影一個總配額,錄滿了拿最舊的換新的(像 NVR 一樣環形覆蓋);另有一道依整顆磁碟計算的磁碟保護當最後一道防線,防止磁碟被寫滿。
- 錄影總配額 —— 雲瞰的錄影最多佔多少本機空間,佔滿後自動刪最舊的。0 = 不限。
- 磁碟使用率閾值 —— 整顆磁碟超過這個百分比時從最舊的錄影刪起,直到降回來。防的是共用磁碟被別的應用佔滿。
- 依天保留 —— 選填,預設關。填了天數就是「超過 N 天一律刪」,給隱私 / 法規需求用。
| 解析度 | 位元率 | 一路一天大約佔 |
|---|---|---|
| 1080p H.264 | 2 Mbps | 約 21 GB |
| 1080p H.265 | 1 Mbps | 約 10 GB |
| 4K H.265 | 4 Mbps | 約 42 GB |
怎麼設、怎麼手動清
把本機錄影非同步上傳到 115 雲端,相當於「雲端 NVR」。在秒傳支援下,已存在的錄影不耗頻寬。
- 1
掃碼登入
網頁後台 → 115 → 顯示 QR Code,用 115 手機 App 掃碼授權。雲瞰 會把登入資訊加密儲存到 data 目錄裡。
- 2
選擇目標資料夾
在 115 裡建立一個空資料夾(例如「雲瞰錄影」),回到 雲瞰 選這個資料夾作為上傳目的地
- 3
切換儲存後端
設定 → 儲存 → 選 115 → 儲存。切換是熱切換,不重啟行程,下一次上傳就會生效
- 4
驗證是否生效
Web Admin 目前沒有上傳佇列 / 進度面板。要確認錄影是否正在上傳,可任選以下三種方式:① 在 設定 → 115 頁面查看 VIP 狀態、剩餘容量是否正常;② 日誌頁(側欄 → 日誌)左側選
uploader服務,即可即時看到每段上傳的開始 / 完成 / 失敗記錄;③ 直接開啟 115 App 或網頁,進入目標資料夾,看新錄影有沒有進來。
115 登入會過期
不是 115 使用者怎麼辦
下載 / 匯出
回放頁支援「按時間區間匯出」——選定起訖時間,後端重新編碼並裁切成單一 MP4 供用戶端下載,起訖時間達到影格級精度(<40ms 誤差)。自動選擇硬體:NVIDIA NVENC(50-200x 即時,RTX 幾十秒/小時)→ Intel iGPU VAAPI(25-50x,N100 一兩分鐘/小時)→ libx264 軟體編碼(1.5-3x,十幾分鐘/小時)。任一層失敗會自動降級到下一層。Web Admin、Android、iOS 三端都支援。
- 1
進入回放頁
選擇要匯出的攝影機和日期。把時間軸拖到目標區間附近,讓中心刻度落在那一段錄影上。
- 2
點選匯出按鈕
Web Admin:播放控制列最右邊的 ⬇ 圖示;Android / iOS:播放控制列「速度」按鈕右側的「匯出」。會彈出區間選擇面板,預設為目前播放位置 ±30 秒。
- 3
調整起訖時間 → 送出
在面板裡修改起訖時間,會即時算出預估大小(1080p H.264 約 250 KB/s)。單次最長 1 小時,超過會被拒絕。點「開始匯出」。
- 4
查看進度
右下角(Web)/ 控制列下方(Android/iOS)會出現進度卡片。Web 走 SSE 即時刷新,行動端走 2 秒輪詢。任務一旦排上號,通常幾秒到幾十秒就能完成(取決於段數 + 是否需要從 115 拉取雲端段)。
- 5
下載
進度卡片變成「下載」按鈕後點它:Web 直接透過瀏覽器下載;Android 走系統 DownloadManager 儲存到
Downloads/SkyView/,狀態列會有通知;iOS 會彈出 ShareSheet 讓你選擇「存到 Files / Photos」或分享到微信。
自動選擇硬體加速 NVENC > VAAPI > libx264
--gpus all,RTX 30/40 系列 1 小時影片 ~30-60 秒
- VAAPI(Intel/AMD 內顯):需要 openvino/all-in-one 映像檔 + 透傳 /dev/dri,N100 等 1 小時影片 ~1-2 分鐘
- libx264(純 CPU):沒有 GPU 時的備援方案,1 小時影片 ~20-40 分鐘(取決於 CPU)
任何一層在執行期失敗(驅動程式不相容、session 上限等)會自動降級到下一層。想手動強制走某一種,設定 recording.export.hwaccel = "nvenc" / "vaapi" / "none"。起訖時間為影格級精度
qp=23 / VAAPI qp=23 / libx264 crf=23——跨硬體輸出在視覺上基本一致(NVENC 檔案可能略大 <10%)。設定 recording.export.{nvenc,vaapi}_qp 可單獨調整品質(0-51,數字越小品質越高)。115 雲端儲存模式也支援
匯出檔案保留 24 小時
data/recordings/_exports/<job_id>.mp4,預設 24 小時後會被 cleanup 自動刪除(避免佔滿磁碟)。在這段時間內,任何時間 / 任何裝置都可以重複點「下載」取得同一份檔案。超時之後若還需要,就重新發起一次。想繞過 UI 直接取得原始段
data/recordings/<camera_id>/<YYYY-MM-DD_HH-MM-SS>.mp4(本機歸檔後會在 data/recordings/_archive/<camera_id>/ 下),每段都是標準 MP4。也可以用 GET /api/recordings/<id>/download 帶上 JWT 取得單一段。這篇文件有幫助嗎?