如何藉助Motion操控Linux監控網路攝影機
Motionhttp://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下尋找。現在,編輯你的~/.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而言,我在Firefox中調出了控制台,滑鼠右擊映像圖4),然後左擊View Image Info查看映像資訊)。這開啟了類似圖5的畫面,它顯示了視頻流的準確URL。在Chrome瀏覽器中,使用“Inspect element”檢查元素)。
圖4:Firefox中的Foscam控制台。
圖5:找到網路攝影機視頻流的URL。
微調配置值
你可以在設定檔中調整各種各樣的參數,比像尺寸、映像品質、畫面播放速率、運動敏感度、幀中所選擇地區的更高敏感度、檔案路徑、HTTP伺服器和時間戳記格式。《Motion指南:按字母順序排列的選項參考手冊》給出了每個選項的詳細資料,詳見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
同樣要記住:諸如畫面播放速率和幀尺寸之類的設定都依賴你的網路攝影機支援的標準。
讓Motion在後台運行
一旦你搞定了一切,讓Motion作為一個背景程式運行,為此只要編輯/etc/default/motion,然後將start_motion_daemon=no改成start_motion_daemon=yes。現在,當你開啟電腦時,Motion就會自動啟動,你可以像對待其他任何背景程式那樣啟動和停止它了。
控制多隻網路攝影機
Motion可以輕鬆管理多隻網路攝影機――你只要為每隻網路攝影機分配各自的設定檔,命名為thread1.conf、 thread1.conf,以此類推。daemon on等常見選項和檔案路徑仍需要你的主motion.conf。然後每個“線程”檔案都有專門針對每一隻網路攝影機的配置。
英文:http://www.linux.com/learn/tutorials/780055-how-to-operate-linux-spycams-with-motion