如何借助Motion操控Linux監控攝像頭
譯文Motion(http://www.lavrsen.dk/foswiki/bin/view/Motion/)是一款小巧、輕型但又功能強大的應用軟件,可以用來在Linux上操控監控攝像頭。它能夠與任何支持Linux的攝像頭協同運行,包括所有的V4L網絡攝像頭、許多IP攝像頭以及安迅士(Axis)攝像頭,它還可以控制平移和傾斜功能。Motion可以錄制使用JPEG、PPM和MPEG等格式的短片和快照,你可以在Web瀏覽器中遠程查看這些視頻,這要歸功于Motion的內置HTTP服務器。它將圖像文件存儲在你所選擇的一個目錄里,它也不需要數據庫,不過它支持MySQL和PostgreSQL,如果你的確想要使用其中一個的話。
圖1:Foscam網絡攝像頭監視著進入本人地盤的所有人。
首先不妨看一下如何使用我那只很可靠的Foscam FI8905W(圖1),借助Motion,讓IP攝像頭工作起來,然后我們將添加一只USB網絡攝像頭。
安裝過程在Debian和Debian衍生版本上很容易,因為Motion已包含在標準軟件庫當中。所以,你只需要運行apt-get install motion。你還需要libav-tools,這是ffmpeg的一個分支。許多月以前,Debian丟棄了ffmpeg,以libav-tools取而代之。在其他發行版上,查閱下載頁面(http://www.lavrsen.dk/foswiki/bin/view/Motion/DownloadFiles)和安裝指南(http://www.lavrsen.dk/foswiki/bin/view/Motion/MotionGuideInstallation),即可了解相關的操作說明。另外大多數發行版仍包括ffmpeg。
安裝程序應該會創建一個motion群組和用戶,并且將motion用戶添加到video群組。要是安裝程序沒有創建motion群組和用戶,那么你必須自行創建。還要自行添加到video群組,才能避開煩人的權限問題。
現在運行motion,看看它是否管用:
- $ sudo motion
- [0] Processing thread 0 - config file /etc/motion/motion.conf
- [0] Motion 3.2.12 Started
- [0] ffmpeg LIBAVCODEC_BUILD 3547904 LIBAVFORMAT_BUILD 3544067
- [0] Thread 1 is from /etc/motion/motion.conf
- [1] Thread 1 started
- [0] motion-httpd/3.2.12 running, accepting connections
- [1] Failed to open video device /dev/video0: No such file or directory
- [0] motion-httpd: waiting for data on port TCP 8080
- [1] Could not fetch initial image from camera
- [1] Motion continues using width and height from config file(s)
- [1] Resizing pre_capture buffer to 1 items
- [1] Started stream webcam server in port 8081
- [...]
它會顯示好多好多行,直到你看到如下內容:
- [1] Failed to open video device /dev/video0: No such file or directory
- [1] Video signal lost - Adding grey image
將你的Web瀏覽器指向localhost:8081,你會看到一幅灰色圖像:
圖2:如果Motion找不到攝像頭,就會顯示灰色圖像。
這很好,因為這表明Motion已正確安裝;你要做的就是對它進行配置。按Ctrl+C組合鍵停止運行。然后,在你的主目錄下創建一個.motion目錄,將默認配置文件拷貝到該目錄中,并將所有權改成歸你所有:
- ~$ mkdir .motion
- ~$ sudo cp /etc/motion/motion.conf .motion/
- ~$ sudo chown carla:carla .motion/motion.conf
你還需要用來存儲motion所拍攝圖像的一個目錄:
- ~$ mkdir motion-images
當你啟動Motion后,它會尋找配置文件,先在當前目錄下尋找,然后在~/.motion下尋找,最后在/etc/motion下尋找?,F在,編輯你的~/.motion/motion.conf文件――該例子包括基本配置以及與我的Foscam IP攝像頭相關的那些行:
- # 在守護程序(后臺)模式下啟動,打2開終端(默認:off)
- daemon on
- # 檢測到運動后,輸出“正常”圖片(默認:on)
- [...]
- output_normal off
- # 存儲進程編號的文件,又叫pid文件。(默認:未定義)。
- process_id_file /var/run/motion/motion.pid
- # 圖像寬度(像素)。有效范圍:取決于攝像頭,默認:352個像素
- width 640
- # 圖像高度(像素)。有效范圍:取決于攝像頭,默認:288個像素
- height 480
- # 每秒拍攝的最大幀數量。
- # 有效范圍:2-100。默認:100(幾乎沒有限制)。
- framerate 7
- # 如果你使用網絡攝像頭要使用的URL,尺寸將自動檢測(包括http://、ftp://或file:///)
- # 必須是返回單JPEG圖片或原始MJPEG流的URL。默認:未定義
- netcam_url value http://http://192.168.10.250:8080/videostream.cgi
- # 網絡攝像頭的用戶名和密碼(只要在需要時)。默認:未定義
- # 語法是用戶:密碼
- netcam_userpass admin:mypassword
- # 存儲圖片和短片的目標基本目錄
- # 推薦使用的絕對路徑。(默認值:當前工作目錄)
- target_dir /home/carla/motion-images
- # ffmpeg用于視頻壓縮的編解碼器。
- [...]
- ffmpeg_video_codec mpeg4
你需要創建用來存儲PID文件的目錄,因為它在motion.conf中表明:
- $ sudo mkdir /var/run/motion
現在再試著啟動它:
- $ sudo motion
- [0] Processing thread 0 - config file /home/carla/.motion/motion.conf
- [0] Motion 3.2.12 Started
- [0] Motion going to daemon mode
到目前為止很好,現在再試一下localhost:8081:
圖3:Motion拍到了我家的私人車道。
看好了,那是本人的私人車道。現在要是有人過來,就會發出警報,那樣我可以開門放狗。在你的攝像頭前跑動,就能觸發運動檢測系統;等你回來后,圖像目錄里面應該有一些.avi短片。你還應該會在localhost:8080找到一個簡單的Motion控制面板。
IP攝像頭設置
《如何在Linux上借助ZoneMinder操控Linux監控攝像頭?(第1部分)》一文較為詳細地介紹了如何設置你的攝像頭,詳見http://www.linux.com/learn/tutorials/762058-how-to-operate-your-spycams-with-zoneminder-on-linux-part-1-。在最初的設置過程,你必須遵守攝像頭廠商的操作說明,比如輸入登錄資料和密碼,以及設定IP地址。你可以還有其他選項,比如幀大小、運動敏感度以及色彩深度或黑白。
獲得準確的netcam_url有時很麻煩。就我的Foscam而言,我在火狐中調出了控制面板,鼠標右擊圖像(圖4),然后左擊View Image Info(查看圖像信息)。這打開了類似圖5的畫面,它顯示了視頻流的準確URL。在Chrome瀏覽器中,使用“Inspect element”(檢查元素)。
圖4:火狐中的Foscam控制面板。
圖5:找到攝像頭視頻流的URL。
微調配置值
你可以在配置文件中調整各種各樣的參數,比如圖像尺寸、圖像質量、幀速率、運動敏感度、幀中所選擇區域的更高敏感度、文件路徑、HTTP服務器和時間戳格式?!禡otion指南:按字母順序排列的選項參考手冊》給出了每個選項的詳細信息,詳見http://www.lavrsen.dk/foswiki/bin/view/Motion/MotionGuideAlphabeticalOptionReferenceManual。記得使你的Motion設置與攝像頭控制面板中的設置相一致,如果攝像頭有控制面板的話。
USB攝像頭
任何支持V4l的USB網絡攝像頭應該不需要費太大的勁就能工作。視頻設備將是/dev/video0。只有攝像頭是連接到你電腦的目錄,/dev/video0才會出現。這是我那只羅技網絡攝像頭的基本的示例配置:
- videodevice /dev/video0
- width 640
- height 480
- framerate 24
- output_normal off
- ffmpeg_video_codec mpeg4
- target_dir /home/carla/motion
同樣要記?。褐T如幀速率和幀尺寸之類的設置都依賴你的攝像頭支持的標準。
讓Motion在后臺運行
一旦你搞定了一切,讓Motion作為一個后臺程序運行,為此只要編輯/etc/default/motion,然后將start_motion_daemon=no改成start_motion_daemon=yes?,F在,當你開啟電腦時,Motion就會自動啟動,你可以像對待其他任何后臺程序那樣啟動和停止它了。
控制多只攝像頭
Motion可以輕松管理多只攝像頭――你只要為每只攝像頭分配各自的配置文件,命名為thread1.conf、 thread1.conf,以此類推。daemon on等常見選項和文件路徑仍需要你的主motion.conf。然后每個“線程”文件都有專門針對每一只攝像頭的配置。
英文:http://www.linux.com/learn/tutorials/780055-how-to-operate-linux-spycams-with-motion