前言


懶懶因為工作的關係,常常需要長時間觀看監視器影片,而且監視器影片短則1-2小時,長則數天甚至以周來計算影片長度!此時當然需要借助軟體來篩選不需要觀看的監視器片段(換言之就是提取出監視器影片中有物體移動或運動的片段)。

以懶懶的經驗來說,自身帶有位移偵測的監視器鏡頭普遍而言價格比較高,一般的鏡頭僅帶有錄影功能,也造成使用者遇見緊急狀況時,無法快速查找需要的片段,這時DVR-Scan就能派上用場!

使用DVR-Scan無須任何費用,最重要的是它基於 BSD 2-Clause 授權條款自由且開源!!

實測畫面


影片總時長從11小時變成2小時

使用教學


(1).安裝DVR-Scan

官方網站

DVR-Scan (作者:Breakthrough)

https://dvr-scan.readthedocs.io/

DVR-Scan on Github

https://github.com/Breakthrough/DVR-Scan

  1. 點擊上方連結後,選取Download進入下載頁面

懶懶使用Windows 10 LTSC 64位元虛擬機器平台(Hyper-V),以下範例教學以Windows平台說明。

懶懶選擇使用 MSI 安裝,點選 Install MSI 下載安裝包直接無腦一鍵安裝到底!

(MacOS,Linux平台可參照官方說明文件使用Python pip工具安裝)

注意
    1. Windows版本已包含所有依賴項目。
    1. 只支援64位元作業系統。

安裝過程-1
安裝過程-2

  1. 「Windows鍵+R鍵」開啟執行框,輸入「cmd」開啟命令提示字元
  1. 輸入指令dvr-scan -V,確認DVR-Scan是否安裝成功
# 顯示DVR-Scan版本資訊
dvr-scan -V
  1. 切換到目標檔案所在的資料夾
# 懶懶的桌面路徑為C:\Users\user\Desktop
# 範例影片路徑為C:\Users\user\Desktop\wuling_202407160300-202407161500.mp4
# 輸入下方「cd 指令」切換目錄至桌面
cd C:\Users\user\Desktop>

切換目錄結束之後,接著開始實際操作DVR-Scan

(2).DVR-Scan 指令


範例影片
事前說明
  • 範例影片的檔名為
    wuling_202407160300-202407161500.mp4

  • 範例影片完整路徑為
    C:\Users\user\Desktop\wuling_202407160300-202407161500.mp4

我們一樣使用命令提示字元來操作DVR-Scan

基本上我們只需要記住一條指令就好

# 指令逐條說明
# dvr-scan 為主程式命令,放在指令最前面
# -i 即--input的簡寫,指輸入目標檔案,後方接上目標檔案名稱
# -o 即--output的簡寫,指輸出目標檔案,後方接上自訂輸出檔案名稱(此以output.avi作為範例名稱)
# -r 即--region-editor的簡寫,選擇畫面中位移偵測的位置(可自訂大小)
# 範例指令
dvr-scan -i wuling_202407160300-202407161500.mp4 -o output.avi -r
  1. 按下Enter鍵後,畫面會跳出Region Editor視窗,我們能以滑鼠拖動頂點定義任意形狀大小

範例圖中懶懶想要偵測任何通過馬路的物體,滑鼠拖動藍色矩形的四個頂點,將頂點設置在馬路的位置

按下Enter鍵後會跳出警告視窗為是否保存設定,按否即可,然後DVR-Scan會為你偵測影片中每個通過藍色四邊形內的物體,並將結果輸出至output.avi中

待DVR-Scan運行完畢後,你就可以開啟output.avi查看輸出內容囉!

DVR-Scan執行中
輸出的output.avi

後記.技巧及疑難排解


(1).不能支援多檔案輸入??

你可能會說:「阿!我監視器影片有數百個耶!要怎麼一次輸入多個檔案」

其實只要影片解析度及影格速率都相等,就可以合併成一個指令來操作

# 例如我桌面的wuling資料夾存放著我的監視器影片
## 以tree命令,列出資料夾所有檔案
C:\Users\user\Desktop\wuling>tree /f
列出資料夾 PATH
磁碟區序號為 C813-4355
C:.
    wuling_202407160300-202407161500.mp4
    Wuling_202407161500-202407170300.mp4
    
子資料夾不存在
    
    
C:\Users\user\Desktop\wuling
# 指令逐條說明
# dvr-scan 為主程序命令,放在指令最前面
# 因為每個輸出檔案檔案名稱都是wuling_作為開頭,後面加*.mp4副檔名(註:*是一個通配符,表示可以替代一個或多個任意字元)
# -o 及 -r 參數放在後面(輸入影片的編碼、影片解析度、影格速率等應相同,簡言之即同一組監視畫面) 
# 此指令會使用DVR-Scan程式,掃描資料夾內每個檔名以`wuling_`開頭及以`.mp4`副檔名的檔案,並將掃描結果存到output.avi中
dvr-scan -i wuling_*.mp4 -o output.avi -r

(2).監視器影片檔案格式出錯??


監視器影片副檔名有些是dvrh.264h.265等等,此時建議先使用監視器內建轉檔工具或是格式工廠ffmpeg、等轉檔工具先進行轉檔,再來使用DVR-Scan!

懶懶實測avimp4m4vmov,甚至4k HEVC的tsmkv檔案都能使用

(3).掃描過程發生奇怪錯誤??


  • 建議搜尋原作者的Github,尋找看看有沒有人發生類似的錯誤

  • 另外建議不要將監視器檔案放在隨身硬碟(或檔案路徑中有中文),然後直接使用DVR-Scan程式掃描,容易發生未知的錯誤

(4).偵測的範圍一定要四邊形嗎??


  • 可以是多個任意形狀!可以參考下方官方說明文件
User Guide

(5).想了解更多參數設定??


  • 由於每個監視器畫質、角度、光源會造成畫面呈現不一,若想調整擷取畫面的參數,請參考官方說明文件