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