fs4412開發板學習筆記(十)
移植motion:
1.從官網
http://www.lavrsen.dk/foswiki/bin/view/Motion/WebHome
下載最新的motion-3.2.12
2.tar -xzf motion-3.2.12.tar.gz 解壓
3.mkdir motion 建立安裝目錄
4.設定(詳細說明見http://www.lavrsen.dk/foswiki/bin/view/Motion/MotionGuideInstallation)
/*--host:arm-linux-交叉編譯--prefix:安裝目錄*/
#./configure --host=arm-none-linux-gnueabi --prefix=${PWD}/_install/
./configure --host=arm-none-linux-gnueabi --build=i486-gnu-linux --prefix=${PWD}/_install/
--with-jpeg-mmx=no
./configure --host=arm-none-linux-gnueabi --with-jpeg-mmx=no --prefix=${PWD}/_install/ --with-ffmpeg=/home/linux/workdir/motion/ffmpeg-0.8.15/_install
./configure --host=arm-none-linux-gnueabi --prefix=${PWD} /_install/ --with-ffmpeg=/home/linux/workdir/motion/ffmpeg-2.5.4/_install
ffmpeg:
1.從官網下載
http://ffmpeg.org/download.html
2.下載yamsm
wget http://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gz
#tar xzvf yasm-1.3.0.tar.gz
#cd yasm-1.3.0
#./configure --prefix=/usr/local/yasm
#make
#make install
#vi /etc/profile
export PATH="$PATH:/usr/local/yasm/bin"
2.安裝ffmpeg:
mkdir _install
./configure --prefix=${PWD}/_install/ --enable-shared --disable-static --disable-yasm --enable-gpl --cc=/usr/local/toolchain/toolchain-4.6.4/bin/arm-none-linux-gnueabi-gcc --enable-cross-compile --arch=arm --disable-stripping --target-os=linux
./configure --prefix=${PWD}/_install/ --enable-shared --enable-static --disable-yasm --enable-gpl --cc=/usr/local/toolchain/toolchain-4.6.4/bin/arm-none-linux-gnueabi-gcc --enable-cross-compile --arch=arm --disable-stripping --target-os=linux
./configure --enable-shared --disable-yasm --prefix=/${PWD}/_install/
make
make install
(1)把lib中的三個連結庫libavcodec.so libavformat.so libavutil.so複製到/usr/lib下。把include目錄下的ffmpeg目錄複製到/usr/include下。
3.編譯motion
(1) 在motion進行./configure的時候顯示Fatal Error YOU MUST HAVE jpeg Support?
將motion_so/libjpeg* 複製到/usr/lib
apt-get install libjpeg62-dev
(2)make
(2.1)motion.h:43:28: fatal error: linux/videodev.h: No such file or directory
===>>apt-get install libv4l-dev*
將motion.h的"#include <linux/videodev.h>" 改為
#include <libv4l1-videodev.h>
(2.2)netcam.h:19:21: fatal error: jpeglib.h: No such file or directory
=====>> apt-get install libjpeg8-dev
(2.3)/usr/include/jpeglib.h:26:62: fatal error: jconfig.h: No such file or directory
=====>>
從http://www.ijg.org/下載jpegsrc.v9a.tar.gz
tar xzf jpegsrc.v9a.tar.gz
cd jpeg-9a/
System types:
--build=BUILD configure for building on BUILD [guessed]
--host=HOST cross-compile to build programs to run on HOST [BUILD]
--target=TARGET configure for building compilers for TARGET [HOST]
./configure CC=arm-none-linux-gnueabi-gcc --prefix=${PWD}/_install/ --enable-shared --enable-static --build=i486-gnu-linux --host=arm-linux --target=arm
make
make install
cp /usr/local/include/jconfig.h /usr/include/
(2.4)video.h:15:28: fatal error: linux/videodev.h: No such file or directory
將video.h的"#include <linux/videodev.h>" 改為
#include <libv4l1-videodev.h>
(2.5)can't find -lz
apt-get install zlib1g-dev
cp /lib/x86_64-linux-gnu/libz.so.1.2.3.4 /home/linux/workdir/motion/ffmpeg-0.8.15/_install/lib
(2.6)
ffmpeg.c: In function 'ffmpeg_init':
ffmpeg.c:232:5: warning: implicit declaration of function 'av_register_protocol' [-Wimplicit-function-declaration]
ffmpeg.c: In function 'get_oformat':
ffmpeg.c:275:9: warning: implicit declaration of function 'guess_format' [-Wimplicit-function-declaration]
ffmpeg.c:275:12: warning: assignment makes pointer from integer without a cast [enabled by default]
將av_register_protocol改為av_register_all();
將guess_format改為av_guess_format
(3)make install
cp _install/bin/motion /source/rootfs/usr/sbin
cp _install/etc/motion-dist.conf /source/rootfs/etc/motion.conf
cp /usr/lib/libjpeg.so.62 /source/rootfs/lib/
cp /usr/lib/libjpeg.so.9 /source/rootfs/lib/
4.執行除錯motion
(1)配置motion.conf
daemon off #關掉deamon模式
quiet on
locate on #探測到影象中有運動時,把運動區域用矩形框起來
videodevice /dev/video0 #載入USB攝像頭的裝置
width 640 #影象寬度
height 480 #影象高度
framerate 5 #每秒最大捕獲幀數
target_dir /motion #設定拍攝圖片的儲存目錄
threshold_tune off #設定是否使用motion detection閾值自動調節。設定off時,可以由threshold指定當探測到多少畫素變化時,判斷為影象中有運動。
threshold 3000 #這個是改變探測靈敏度,越小越靈敏,這裡設為3000畫素值
ffmpeg_cap_new on #在detect到運動時,用視訊記錄下來
ffmpeg_video_codec msmpeg4 #設定視訊的編碼器
webcam_localhost off #必須改成off才能通過pc訪問
webcam_maxrate 8
snapshot_interval 5 #設定自動採集圖片的週期,當有運動被檢測到時,採集頻率會自動變高。如果設定0,則無運動物體時不自動拍照
on_event_start /root/detected #當該事件產生時執行detected指令碼,該指令碼是簡單的可執行shell指令碼,下同
on_event_end /root/end #當該事件產生時執行end指令碼
gap 5 #設定,在探測到運動後,多長時間沒有運動的話就觸發運動結束指令on_event_end。
(2)執行: motion -c motion.conf
問題1:
VFS: Mounted root (nfs filesystem) readonly on device 0:11.
[1] Error opening file ./01-19700101000142-00.jpg with mode w: Read-only file system
[1] Can't write picture to file ./01-19700101000142-00.jpg: Read-only file system
解決:在開發板執行
[[email protected] ]# mount
192.168.1.110:/source/rootfs on / type nfs (ro,relatime,----)可知掛載的nfs為ro
Linux下出現Read-only file system的解決辦法:
正常執行中的網站,忽然間出現session目錄不可寫,連線伺服器一看,
任何關於寫硬碟的命令都不能用,提示Read-only file system,使用一條命令即可搞定此問題:
mount -o remount rw /
||
\/
目的:使根目錄可寫
由於/etc/fstab檔案編輯錯誤 而引起的不能正常進入系統
解決方法就是修改/etc/fstab檔案成原來正常格式 刪除錯誤的或者是不存在的掛載目錄
操作:根據提示進入修復模式 Login incorrect.
(Repair filesystem) 1 # vi /etc/fstab
但是修復模式下(read-only system) 檔案是被保護的不能修改 執行下面命令 把系統檔案許可權改成可讀寫(rw)
(Repair filesystem) 1 # mount -o remount,rw /
使根目錄可寫.即可以修復/etc/fstab檔案,使之可寫.然後就可以vi修改了
儲存 wq
(Repair filesystem) 1 #reboot
問題2:
Wrong JPEG library version: library is 62, caller expects 90
由於使用了libjepg.so.62但編譯的時候使用了非ARM平臺的庫
重新配置jpeg庫,編譯後使用ARM平臺的庫再編譯motion
遠端監控:在火狐或者谷歌瀏覽器輸入http://192.168.1.140:8081/,來實時監控監控
相關推薦
fs4412開發板學習筆記(十七)
# madplay 123.mp3 WM8960 Playback: ASoC: unmatched rate symmetry: 8000 - 44100 output: ioctl(SNDCTL_DSP_SPEED): Invalid argument
fs4412開發板學習筆記(十五)
音效卡驅動dts. ====== wm8960:[email protected]1a{ compatible="wlf,wm8960"; reg = <0x1a>; };
fs4412開發板學習筆記(十)
移植motion: 1.從官網 http://www.lavrsen.dk/foswiki/bin/view/Motion/WebHome 下載最新的motion-3.2.12 2.tar -xzf motion-3.2.12.tar.gz 解壓 3.mkdi
fs4412開發板學習筆記(二十一)
常用命令: setenv bootargs root=/dev/nfs nfsroot=192.168.0.110:/source/rootfs rw ip=192.168.0.140:192.168.0.110:192.168.0.1:255.255.2
fs4412開發板學習筆記(三)
1.重新制作跟檔案系統啟動還是發生如下錯誤 [ 1.955000] request_module: runaway loop modprobe binfmt-464c //該錯誤是由於沒有配置交叉編譯工具 配置busybox時,在配置中發現bus
野火-Mini-RT-1052開發板-學習筆記一
RT-1052啟動細節 一、基本概念 Code :程式程式碼 RO-Data:只讀資料(定義的常量或const型的變數) RW-Data:靜態初始化,即有初值的變數 ZI-Data:未初始化的靜態變數(一般這類變數,被初始化為0) Total RO Size = Code + RO-
ALIENTEK MiniSTM32開發板 學習筆記(一)
首先把屏插入開發板,OLED的話靠左,LED就要靠右(最左為空) 結果白屏。。。 檢查跳線均已接地,仍舊白屏。 用串列埠助手看,LCD ID貌似有問題,悲催??? FML ,屏腳插緊點就好了,LCD ID正常。 貌似出廠自帶DEMO,無限迴圈中,看樣子有點和GTK的DEMO類似啊,似乎可以做很多東西嘛。 研
Python學習筆記十五_開發接口
mock con n) clas reg 都是 upper 建立 insert 1、mock接口,模擬一些接口,在別的接口沒有開發好的時候,你需要用它 假的支付接口,模擬支付成功 2、 3、查看數據,避免直接操作數據庫flask web開發框架 實例化server
IOS開發學習筆記十六 使用UITableView控制元件實現微博列表效果
效果:專案地址 微博列表唯一需要注意的是每個條目的列表行高不一致,需要在UITableView的代理方法heightForRowAtIndexPath中動態設定行高 需要建立Module物件CZMicroBlogFrame來儲存UITableCell的子View的
IOS開發學習筆記十五 為UITableView控制元件新增Header和Footer
效果圖:專案地址 新增圖片素材,新增plist檔案,新增名為CZGoods的module檔案 @implementation CZGoods - (instancetype)initWithDict:(NSDictionary *)dict { if
IOS開發學習筆記十四 UITableView控制元件實現ListView的效果
效果圖:專案地址 ViewController對應的程式碼: #import "ViewController.h" #import "CZHero.h" @interface ViewController () <UITableViewDataSource, UIT
IOS開發學習筆記十二 實現一個簡單的答題器
效果圖:專案地址 專案新增素材,新增plist檔案,並新增plist裡面的字典資料對應的model物件 module標頭檔案: #import <Foundation/Foundation.h> @interface CZQuestion :
IOS開發學習筆記十一 使用xlib檔案實現GridView的效果
效果圖: 在專案中資源素材檔案 新增plist檔案 新增名叫AFGridItem的model物件,用來代替我們從plist檔案中解析得到的字典資料,並新增通過字典獲取物件例項和初始化物件的方法。 #import <Foundation/Foun
IOS開發學習筆記十 使用程式碼實現GridView的效果
效果圖:專案地址 把圖片素材放入專案中,併為專案建立plist檔案,存放一個字典陣列,每個字典裡面對應存放這圖片素材名稱和GridView子條目的對應的文字描述。 新增NSArray *app的變數,使用懶載入的方式來讀取並儲存plist檔案的內容 在Vie
嵌入式核心及驅動開發之學習筆記(十) 非同步通訊+中斷實現讀取資料
對於linux一切都是檔案,驅動裝置在應用層也是以檔案的形式進行讀寫。之前學了阻塞、非阻塞、多路複用的方式讀裝置,它們都需要應用主動讀取。那麼應用層有沒有一種方式,當底層將資料準備好了,應用程式自動處理這些資料?通過非同步通訊可以實現,這有寫類似硬體層的中斷概念 驅動層(準備好了資料) --&g
嵌入式核心及驅動開發之學習筆記(十七) 裝置樹的定義規則和獲取方法
概述 在Linux 2.6中,arch/arm/plat-xxx和arch/arm/mach-xxx中充斥著大量的垃圾程式碼,相當多數的程式碼只是在描述板級細節,而這些板級細節對於核心來講,不過是垃圾,如板上的platform裝置、resource、i2c_board_info、sp
嵌入式核心及驅動開發之學習筆記(十一) 中斷優化處理
ARM cortex-A系列的核心不支援中斷巢狀。在核心中斷函式中,如果中斷處理時間過長,產生中斷巢狀,重者系統崩潰,輕者也會影響其他事件處理。這也是中斷中不能使用延時函式的原因。 但是有些高實時性裝置(比如網絡卡),就是需要處理大量的業務。為了滿足中斷處理時間儘量短的原則
Shell 腳本學習筆記十:Shell輸入輸出重定向
描述符 獨立 文件重定向 eof 輸出 合並 包含 span 輸出重定向 command > file 將輸出重定向到 file。 command < file 將輸入重定向到 file。 command >> file
Tomcat學習筆記(十)
manager 就會 over 程序 getname 2個 del initial throwable StandardWrapper容器 Context容器包含一個或者多個Wrapper實例,每個Wrapper實例表示一個具體的servlet定義。
Java基礎學習筆記十六 集合框架(二)
first 哈希 cat etag 基於 col 容器 處的 新元素 List List接口的特點: 它是一個元素存取有序的集合。例如,存元素的順序是11、22、33。那麽集合中,元素的存儲就是按照11、22、33的順序完成的。 它是一個帶有索引的集合,通過索引就