FFmpeg 實作簡易監視器與錄影

話說公司裡有一個房間是充當資訊機房的作用,雖然放置了一堆設備跟線路,但外觀上就是很單純的一個房間,也沒有監視器。儘管監視器實際上並不是很重要,但由於 DR 的座位,跟機房之間有點距離。所以若能規劃出一個簡易方案,從遠端就能夠檢視機房現場,覺得也不是件壞事。

 

於是便從機房中選了一部作業系統為 RHEL 8.x 的伺服器主機,裝上一支 Microsoft LifeCam HD-3000 網路攝影機。讓該主機除了原本的任務外,再額外擔負起監視機房的工作。至於軟體層的規劃非常單純,DR 的構想是在主機上使用 FFmpeg 擷取視訊鏡頭(/dev/video0),並轉碼成 H.264 串流;然後透過管線輸送給本機的 VLC 播放軟體,再由 VLC 建立一個簡單的 HTTP 服務在 8080 埠上,所編寫的指令寫於此文字檔中。

 

由於沒有打算收錄音訊的部份,所以麥克風裝置是完全省略,不做擷取與轉碼。以及為了讓輸出的影像能夠反映出日期及時間,所以加上了繪製文字的設定,將時間繪製在畫面左下角。除此之外,由於前述指令的 VLC 輸出功能是監聽 TCP 8080 埠,所以防火牆規則要記得做相應的放行。

 

順利執行指令後,在電腦上使用 VLC 或其它媒體播放器,開啟 http://<主機 IP 位址>:8080,便應能夠播放串流。而在產生串流後,除了可使用播放器做監看外,也可以另外執行指令來進行錄影。舉例來說,於主機上執行以下指令,便能夠從 http://localhost:8080 儲存 5 分鐘長度的 MKV 影片:

  • ffmpeg -i http://localhost:8080 -y -vcodec copy -an -t 00:05:00 output.mkv

 

若以此類推,再利用系統排程及編寫腳本,就能夠實作出定期及分段錄影的機制了。封裝格式選擇 MKV 或 MP4 都可以,然而倘若需要考量儲存過程出現非預期中止的可能性,則前者是比較可靠的選擇。

 

分類: