6.1樹莓派基本操作
目前提供了三個應(yīng)用程序,分別為:raspistill、raspivid、raspistillyuv。其中 raspistill 和 raspistillyuv 非常相似,并且都是用于捕捉圖像,而 raspivid 用于捕捉視頻。
所有應(yīng)用程序均基于命令行方式運行,通過 OpenMAX 的 mmal API 進(jìn)行編寫。OpenMAX 的 mmal API 提供了更易使用的系統(tǒng)組件。注意,mmal 是一個由 Broadcom 為 Videocore 4 系統(tǒng)定制的 API。
應(yīng)用程序使用了四個 OpenMAX(mmal)組件:camera(攝像)、preview(預(yù)覽)、encoder(編碼)、null_sink。所有應(yīng)用程序均使用了攝像組件,raspistill 使用了圖像編碼組件,raspivid 使用了視頻編碼組件,raspistillyuv 沒有使用編碼組件,而是直接將 YUV 或 RGB 從攝像組件輸出到文件。
預(yù)覽顯示為可選參數(shù),但是可以用于全屏或輸出到指定的顯示器顯示區(qū)域進(jìn)行顯示。如果預(yù)覽被禁用,那么 null_silk 組件將會對預(yù)覽幀進(jìn)行“吸收”。這是由于盡管不需要攝像頭生成供顯示所用的的預(yù)覽幀,但是仍需要使用它們進(jìn)行曝光計算和白平衡設(shè)置的緣故。
此外,還可以省略文件名參數(shù),這樣既可以直接預(yù)覽顯示而不寫入文件,或者直接輸出到標(biāo)準(zhǔn)輸出設(shè)備上。命令行幫助可以通過直接輸入應(yīng)用程序名稱獲得。
6.1.1安裝攝像頭硬件
警告:攝像頭對靜電非常敏感。如果您在安裝攝像頭電路板時沒有防靜電手環(huán),可以嘗試觸摸一下水龍頭、金屬水槽或其它類似的東西即可。
攝像頭電路板與 Raspberry Pi 通過一條 15 芯的排線進(jìn)行連接。僅有兩個連接座需要連接,排線需要安裝到攝像頭電路板和 Raspberry Pi 上。您需要正確安裝,否則攝像頭無法工作。對于攝像頭電路板,排線末端的藍(lán)色標(biāo)記應(yīng)該背對著電路板。而 Raspberry Pi 部分,藍(lán)色標(biāo)記應(yīng)該正對著網(wǎng)絡(luò)接口方向。
盡管兩部分連接座不盡相同,但它們的工作方式很相似。對于 Raspberry Pi,拉起連接座兩端的卡扣。它應(yīng)該很容易拉起,并能夠輕微活動。把排線完全插入到連接座中,并保證豎直,然后輕輕按下兩端的卡扣。攝像頭電路板方面,也需要您將卡扣向電路板相反方向拉開,然后輕輕插入排線,最后將卡扣推回。攝像頭電路板的連接座與 Pi 上的區(qū)別就在這里。
6.1.2安裝攝像頭軟件
執(zhí)行下文介紹的命令行進(jìn)行下載并安裝最新的內(nèi)核,GPU 固件及應(yīng)用程序。您需要連接到互聯(lián)網(wǎng)才可以實現(xiàn)以下操作。
$sudo apt-get update
$sudo apt-get upgrade
接下來,您首先需要在 Raspberry Pi 的 raspi-config 程序中啟用攝像頭的支持。
1)連接攝像頭與樹莓派
2)修改樹莓派配置,開啟攝像頭模塊。
sudo raspi-config
圖1
將光標(biāo)移動到攝像頭選項(Camera option)處,并選擇啟用(Enable)。在退出 raspi-config 時會要求您重新啟動。啟用選項是為了確保重啟后 GPU 固件能夠正確運行(包括攝像頭驅(qū)動和調(diào)節(jié)電路),并且 GPU 從主內(nèi)存劃分到了足夠的內(nèi)存使攝像頭能夠正確運行。
圖2
測試系統(tǒng)已經(jīng)完成安裝并正常工作,可嘗試以下命令:
$raspistill -v -o test.jpg
這將顯示來自攝像頭 5 秒鐘的預(yù)覽圖像,并且拍攝一張照片,然后保存為文件 test.jpg,同時顯示出需要相關(guān)信息。
6.1.3通用命令行參數(shù)
? 預(yù)覽窗口
–preview, -p 預(yù)覽窗口設(shè)置 <‘x,y,w,h’>
允許用戶在屏幕上定義預(yù)覽窗口的大小和位置。注意,這將在所有其它窗口/圖像的上層顯示。
–fullscreen, -f 全屏預(yù)覽模式
強(qiáng)制預(yù)覽屏幕全屏顯示。注意,這將會保留輸入圖像的長寬比例,所以可能會在圖像的邊緣出現(xiàn)填充條。
–nopreview, -n 不顯示預(yù)覽窗口
完全禁用預(yù)覽窗口。注意,盡管預(yù)覽窗口被禁用,但攝像頭仍然在進(jìn)行處理,所以會繼續(xù)消耗資源。
–opacity, -op 設(shè)置預(yù)覽窗口透明度
設(shè)置預(yù)覽窗口的透明度。0 為完全透明,255 為完全不透明。
? 攝像頭控制參數(shù)
–sharpness, -sh 設(shè)置圖像銳度(-100 – 100)
設(shè)置圖像的銳度,默認(rèn)為 0。
–contrast, -co 設(shè)置圖像對比度(-100 – 100)
設(shè)置圖像的對比度,默認(rèn)為 0。
–brightness, -br 設(shè)置圖像亮度(0 – 100)
設(shè)置圖像的亮度,默認(rèn)為 50。0 為最暗,100 為最亮。
–saturation, -sa 設(shè)置圖像飽和度(-100 – 100)
設(shè)置圖像色彩飽和度。默認(rèn)為 0。
–ISO, -ISO 設(shè)置捕捉 ISO
為捕捉圖像設(shè)置 ISO。范圍為 100 到 800。
–vstab, -vs 打開視頻穩(wěn)定
僅用于視頻模式,用于開啟視頻穩(wěn)定。
–ev, -ev 設(shè)置曝光補(bǔ)償
設(shè)置圖像的曝光補(bǔ)償。范圍為 -10 到 10,默認(rèn)為 0。
–exposure, -ex 設(shè)置曝光模式
可能用到的參數(shù)為:
auto – 使用自動曝光模式
night – 夜間拍攝模式
nightpreview -夜間預(yù)覽拍攝模式(暫且這么稱呼)
backlight – 逆光拍攝模式
spotlight – 聚光燈拍攝模式
sports – 運動拍攝模式(高速快門等)
snow – 雪景優(yōu)化拍攝模式
beach – 海灘優(yōu)化拍攝模式
verylong – 長時間曝光拍攝模式
fixedfps – 幀約束拍攝模式
antishake – 防抖模式
fireworks – 煙火優(yōu)化拍攝模式
注意,不是所有的設(shè)置都會在對攝像頭進(jìn)行微調(diào)時得到相應(yīng)作用。
–awb, -awb 設(shè)置自動白平衡
可能用到的參數(shù)為:
off – 關(guān)閉白平衡測算
auto – 自動模式(默認(rèn))
sun – 日光模式
cloud – 多云模式
shade – 陰影模式
tungsten – 鎢燈模式
fluorescent – 熒光燈模式
incandescent – 白熾燈模式
flash – 閃光模式
horizon – 地平線模式
–imxfx, -ifx 設(shè)置圖像特效
設(shè)置應(yīng)用于圖像上的特效
可能用到的參數(shù)為:
none – 無特效(默認(rèn))
negative – 反色圖像
solarise – 曝光過度圖像
posterize – 色調(diào)圖像
whiteboard – 白板特效
blackboard – 黑板特效
sketch – 素描風(fēng)格特效
denoise – 降噪圖像
emboss – 浮雕圖像
oilpaint – 油畫風(fēng)格特效
hatch – 草圖特效
gpen – 馬克筆特效
pastel – 柔化風(fēng)格特效
watercolour – 水彩風(fēng)格特效
film – 膠片顆粒風(fēng)格特效
blur – 模糊圖像
saturation – 色彩飽和圖像
colourswap – 暫未可用
washedout – 暫未可用
posterise – 暫未可用
colourpoint – 暫未可用
colourbalance – 暫未可用
cartoon – 暫未可用
–colfx, -cfx 設(shè)置色彩特效
指定圖像 U 和 V 通道的參數(shù)(范圍 0 到 255)。例如:–colfx 128:128 將得到一張單色圖像。
–metering, -mm 設(shè)置測光模式
為預(yù)覽和捕捉指定測光模式
可能用到的參數(shù)為:
average – 全畫面平衡測光
spot – 點測光
backlit – 模擬背光圖像
matrix – 陣列測光
–rotation, -rot 設(shè)置圖像旋轉(zhuǎn)(0 – 359)
對取景器和最終得到的圖像進(jìn)行旋轉(zhuǎn)。可以接受 0 以上任何值,但由于硬件限制,只支持 0、90、180、270 度。
–hflip, -hf 設(shè)置水平翻轉(zhuǎn)
水平翻轉(zhuǎn)預(yù)覽和保存的圖像。
–vflip, -vf 設(shè)置垂直翻轉(zhuǎn)
垂直翻轉(zhuǎn)預(yù)覽和保存的圖像。
–roi, -roi 設(shè)置傳感器感光區(qū)域
允許指定用于預(yù)覽和捕捉的源所使用的傳感器區(qū)域。該功能中 x 和 y 參數(shù)指定了坐上角的坐標(biāo),以及定義了寬度和高度值,并且所有值都為標(biāo)準(zhǔn)化坐標(biāo)(0.0 到 1.0)。那么,感光區(qū)域設(shè)置為橫向和縱向都為一半,并且寬度和高度都為傳感器的四分之一時,可以寫為:
-roi 0.5,0.5,0.25,0.25
–shutter, -ss 設(shè)置快門速度
設(shè)置快門的速度為指定的值(單位為微秒)。據(jù)當(dāng)前的考證,目前未定義時,快門速度上限大約為 330000us(330ms 或 0.33s)。
6.1.4應(yīng)用程序?qū)S性O(shè)置
? raspistill
–width, -w 設(shè)置圖像寬度
–height, -h 設(shè)置圖像高度
–quality, -q 設(shè)置 JPEG 品質(zhì),品質(zhì)為 100 時幾乎等同于未壓縮。75 相對是比較好的選擇。
–raw, -r 向 JPEG 元數(shù)據(jù)中添加 RAW 信息,該參數(shù)將從攝像頭獲取到的 RAW 信息插入到 JPEG 元數(shù)據(jù)中。
–output, -o 輸出文件名,指定輸出的文件名。如果不指定,將不保存到文件。如果文件名為“-”,將輸出發(fā)送至標(biāo)準(zhǔn)輸出設(shè)備。
–latest, -l 鏈接最后一幀到文件名,基于該名稱做一個指向最后一幀的文件系統(tǒng)鏈接。
–verbose, -v 在運行過程中輸出詳細(xì)信息,在程序運行過程中,輸出調(diào)試/詳細(xì)信息。
–timeout, -t 獲取圖片前的時間,程序?qū)?zhí)行指定的時長,然后進(jìn)行獲取操作(前提是 output 已指定)。如果未指定,將設(shè)置為 5 秒。
–timelapse, -tl 間隔拍攝模式,指定多次拍攝之間所間隔的毫秒值。注意,您需要在文件名中加入 %04d 做為畫面計數(shù)。
-t 30000 -tl 2000 -o image%04d.jpg,將會在 30 秒的時間內(nèi),每兩秒拍攝一次,并且將文件命名為:image1.jpg、image0002.jpg…image0015.jpg。注意 %04d 表示在文件名中數(shù)字部分加入前導(dǎo)零,使其成為 4 位數(shù)。例如,%08d 將生成 8 位數(shù)字。如果間隔時間設(shè)置為 0,程序?qū)⒉婚g斷(取決于系統(tǒng)負(fù)擔(dān)及存儲速度)進(jìn)行拍攝。不過需要注意,每次捕捉前還是會有 30ms 的最小暫停時間,用于曝光計算操作。
–thumb, -th 設(shè)置縮略圖參數(shù)(x:y:quality),允許指定插入到 JPEG 文件中縮略圖信息。如果不指定,將為默認(rèn)的 64×48 質(zhì)量為 35 的縮略圖。如果設(shè)置為 –thumb none,那么將不會向文件中插入縮略圖信息。文件的尺寸也會稍微變小。
–demo, -d 運行演示模式,該參數(shù)將循環(huán)使用所有攝像頭參數(shù),并且不會捕捉。而且無論是否完成所有的循環(huán),在超時周期到達(dá)時都會停止演示操作。循環(huán)之前的時間需要設(shè)置毫秒值。
–encoding, -e 指定輸出文件的編碼,可用的參數(shù)為 jpg、bmp、gif、png。注意,未被硬件加速支持的圖像格式(gif、png、bmp)在保存的時候要比 jpg 格式耗時更長。還需要注意,文件擴(kuò)展名在編碼時將被完全忽略。
–exif, -x 在捕捉的內(nèi)容中加入 EXIF 標(biāo)簽(格式為 ‘key=value’),允許在 JPEG 圖像中插入特定的 EXIF 標(biāo)簽。您可以插入 32 條記錄。這是非常實用的功能,比如插入 GPS 元數(shù)據(jù)。例如設(shè)置經(jīng)度。
–exif GPS.GPSLongitude=5/1,10/1,15/100,該命令將會設(shè)置經(jīng)度為 5 度 10 分 15 秒。查看 EXIF 文檔獲得所有可用標(biāo)簽的詳細(xì)信息。支持的標(biāo)簽如下:
IFD0. 或 IFD1.
< ImageWidth, ImageLength, BitsPerSample, Compression, PhotometricInterpretation, ImageDescription, Make, Model, StripOffsets, Orientation, SamplesPerPixel, RowsPerString, StripByteCounts, Xresolution, Yresolution, PlanarConfiguration, ResolutionUnit, TransferFunction, Software, DateTime, Artist, WhitePoint, PrimaryChromaticities, JPEGInterchangeFormat, JPEGInterchangeFormatLength, YcbCrCoefficients, YcbCrSubSampling, YcbCrPositioning, ReferenceBlackWhite, Copyright>
EXIF.
<ExposureTime, FNumber, ExposureProgram, SpectralSensitivity, a ISOSpeedRatings, OECF, ExifVersion, DateTimeOriginal, DateTimeDigitized, ComponentsConfiguration, CompressedBitsPerPixel, ShutterSpeedValue, ApertureValue, BrightnessValue, ExposureBiasValue, MaxApertureValue, SubjectDistance, MeteringMode, LightSource, Flash, FocalLength, SubjectArea, MakerNote, UserComment, SubSecTime, SubSecTimeOriginal, SubSecTimeDigitized, FlashpixVersion, ColorSpace, PixelXDimension, PixelYDimension, RelatedSoundFile, FlashEnergy, SpacialFrequencyResponse, FocalPlaneXResolution, FocalPlaneYResolution, FocalPlaneResolutionUnit, SubjectLocation, ExposureIndex, SensingMethod, FileSource, SceneType, CFAPattern, CustomRendered, ExposureMode, WhiteBalance, DigitalZoomRatio, FocalLengthIn35mmFilm, SceneCaptureType, GainControl, Contrast, Saturation, Sharpness, DeviceSettingDescription, SubjectDistanceRange, ImageUniqueID>
GPS.
<GPSVersionID, GPSLatitudeRef, GPSLatitude, GPSLongitudeRef, GPSLongitude, GPSAltitudeRef, GPSAltitude, GPSTimeStamp, GPSSatellites, GPSStatus, GPSMeasureMode, GPSDOP, GPSSpeedRef, GPSSpeed, GPSTrackRef, GPSTrack, GPSImgDirectionRef, GPSImgDirection, GPSMapDatum, GPSDestLatitudeRef, GPSDestLatitude, GPSDestLongitudeRef, GPSDestLongitude, GPSDestBearingRef, GPSDestBearing, GPSDestDistanceRef, GPSDestDistance, GPSProcessingMethod, GPSAreaInformation, GPSDateStamp, GPSDifferential>
EINT.
<InteroperabilityIndex, InteroperabilityVersion, RelatedImageFileFormat, RelatedImageWidth, RelatedImageLength>
【注意】有部分標(biāo)簽將會由攝像頭系統(tǒng)自動設(shè)置,但是會被命令行執(zhí)行的 EXIF 操作所覆蓋。如果設(shè)置為 –exif none,那么將不會向文件中插入 EXIF信息。文件的尺寸也會稍微變小。
–fullpreview, -fp 全預(yù)覽模式,這將使預(yù)覽窗口運行于全分辨率捕捉模式。該模式最大幀率為 15fps,并且預(yù)覽將和捕捉擁有相同的可視區(qū)域。在不進(jìn)行模式轉(zhuǎn)換時,捕捉動作將進(jìn)行的更迅速。該功能目前還在開發(fā)中。
–keypress, -k 按鍵模式,攝像頭會運行(-t)參數(shù)指定的時間,并且每次按下回車鍵時進(jìn)行一次捕捉。在超時設(shè)置到達(dá)前按 X 鍵然后按回車鍵將退出程序。如果超時時間設(shè)置為 0,攝像頭將一直工作,直到按下 X 鍵和回車鍵。使用 verbose(-v)參數(shù)可以顯示輸入確認(rèn)提示,否則不會有任何提示。
–signal, -s 信號模式,攝像頭會運行(-t)參數(shù)指定的時間,并且每次向攝像進(jìn)程發(fā)送 USR1 信號時進(jìn)行一次捕捉。該操作可以通過發(fā)送 kill 命令進(jìn)行終止。您可以使用“pgrep raspistill”命令找到攝像進(jìn)程的 ID。
kill -USR1
? raspistillyuv
raspistillyuv 的許多選項與 raspistill 是相同的。本節(jié)將對不同的部分進(jìn)行講解。
不支持的選項:
–exif, –encoding, –thumb, –raw, –quality
擴(kuò)展選項:
–rgb, -rgb 以 RGB888 形式保存未壓縮數(shù)據(jù),該選項強(qiáng)制圖像保存為每個通道為 8 bits 的 RGB 格式,而不是 YUV420 格式。
【注意】在 raspistillyuv 中所保存的圖像在緩沖區(qū)中水平尺寸封裝為可被 16 整除(所以可能會在每行的結(jié)尾都會出現(xiàn)無用的字節(jié)以使寬度可被 16 整除)。緩沖區(qū)也會將垂直方向封裝為可被 16 整除,在 YUV 模式中,每個 Y、U、V 平面都會使用該方式進(jìn)行封裝。
? raspivid
–width, -w 設(shè)置圖像寬度,視頻的寬度。范圍為 64 到 1920。
–height, -h 設(shè)置圖像高度,視頻的高度。范圍為 64 到 1080。
–bitrate, -b 設(shè)置碼率。使用比特/秒為單位,所以 10Mbits/s 需要輸入 -b 10000000。對于 H264 編碼的 1080p30 高清視頻,碼率需要在 15Mbits/s 或以上。碼率最大為 25Mbits/s(-b 25000000),但大于 17Mbits/s 時,在 1080p30 中并沒有太大區(qū)別。
–output -o 輸出文件名,指定輸出的文件名。如果不指定,將不保存到文件。如果文件名為“-”,將輸出發(fā)送至標(biāo)準(zhǔn)輸出設(shè)備。
–verbose, -v 在運行過程中輸出詳細(xì)信息,在程序運行過程中,輸出調(diào)試/詳細(xì)信息。
–timeout, -t 獲取圖片前的時間,程序?qū)?zhí)行指定的時長,然后進(jìn)行獲取操作(前提是 output 已指定)。如果未指定,將設(shè)置為 5 秒。設(shè)置為 0 意味著程序?qū)⒁恢边\行,直到按下 Ctrl-C 才會停止。
–demo, -d 運行演示模式,該參數(shù)將循環(huán)使用所有攝像頭參數(shù),并且不會捕捉。而且無論是否完成所有的循環(huán),在超時周期到達(dá)時都會停止演示操作。循環(huán)之前的時間需要設(shè)置毫秒值。
–framerate, -fps 指定錄制的視頻每秒的畫面數(shù)量,目前,最小的幀率為 2fps,最大為 30fps。似乎將來會有所改變。
–penc, -e 在編碼完成后顯示預(yù)覽圖像,開啟該選項會在壓縮完成后顯示預(yù)覽圖像。顯示在預(yù)覽窗口中的圖像會因為壓縮的原因出現(xiàn)失真。正常情況下,預(yù)覽將會顯示攝像頭輸出的原始圖像。該功能在未來的版本中可能不再可用。
–intra, -g 指定幀內(nèi)刷新周期(關(guān)鍵幀率/畫面組),為錄制的視頻設(shè)置幀內(nèi)刷新周期(畫面組)率。H.264 視頻在每個幀內(nèi)刷新周期中都使用了 I-frame。該選項指定了每個 I-frame 之間幀的數(shù)量。數(shù)字越大,生成的視頻尺寸越小,數(shù)字越小,視頻流將越龐大,直至出錯。
–qp, -qp 設(shè)置量化參數(shù),為視頻流設(shè)置初始量化參數(shù)。范圍從 10 到 40,并且對所錄制視頻的質(zhì)量有極大的影響。值越大,質(zhì)量越低,并且文件尺寸越小。碼流設(shè)置為 0,并結(jié)合此參數(shù)一起使用,可用來設(shè)置一個完全動態(tài)碼流的視頻。
–profile, -pf 為錄制的視頻指定 H264 配置文件,為錄制的視頻指定 H264 配置文件。選項為:baseline、main、high。
–inline, -ih Insert PPS, SPS headers 插入 PPS,SPS 頭,強(qiáng)制視頻流的 I-frame 都包含 PPS 和 SPS 頭信息。某些視頻封裝格式需要該信息。例如 Apple HLS。這些頭信息體積很小,所以不會讓文件的尺寸增加太多。
–timed, -td 設(shè)置定時切換捕捉和暫停,該選項可以使視頻捕捉在特定的時間里暫停并重新開始記錄。需要指定開啟時間和關(guān)閉時間兩個值。開啟時間是視頻的捕捉時長,關(guān)閉時間是暫停的時長。總錄制時長是又超時選項進(jìn)行定義的。注意,由于開啟時間和關(guān)閉時間的設(shè)置原因,錄制時長將略微比超時設(shè)置的時間要長。
例如
$raspivid -o test.h264 -t 25000 -timed 2500,5000
將進(jìn)行 25 秒的錄制操作。錄制操作包括若干個 2500 毫秒(2.5 秒)錄制和 5000 毫秒(5秒)暫停的操作,并且重復(fù)時長超過 20 秒。所以該錄制過程中實際只錄制了 10 秒的內(nèi)容。包括 4 段 2.5 秒的視頻片斷 = 被若干個 5 秒鐘暫停操作分隔開的 10 秒鐘視頻。
–keypress, -k 使用回車鍵在錄制和暫停兩種狀態(tài)間進(jìn)行切換,每次點擊回車鍵將會暫停或重新開始錄制進(jìn)程。點擊 X 鍵后點擊回車鍵將停止錄制并關(guān)閉程序。注意,超時設(shè)置值將影響錄制結(jié)束時間,但僅在每次回車鍵點擊后進(jìn)行檢查,所以如果系統(tǒng)正在等待按鍵操作,盡管超時設(shè)置已過期,錄制進(jìn)程退出前也會等待按鍵操作。
–signal, -s 使用 SIGUSR1 信號在錄制和暫停兩種狀態(tài)間進(jìn)行切換,向 Raspivid 進(jìn)程發(fā)送 USR1 信號來切換錄制和暫停。該操作可以通過使用 kill 命令來實現(xiàn)。您可以使用“pgrep raspivid” 命令找到 raspivid 的進(jìn)程 ID。
kill -USR1
【注意】超時設(shè)置值將影響錄制結(jié)束時間,但僅在每次發(fā)送 SIGUSR1 信號后進(jìn)行檢查,所以如果系統(tǒng)正在等待信號,盡管超時設(shè)置已過期,錄制進(jìn)程退出前也會等待信號的發(fā)送操作。
–initial, -i 定義啟動時的初始狀態(tài)。定義攝像頭初始狀態(tài)為暫?;蛄⒓撮_始錄像。選項可以為“record”(錄像)或“pause”(暫停)。注意,如果您設(shè)置的超時時長很短,而且初始狀態(tài)設(shè)置為“暫停”,那么將不會錄制任何輸出的內(nèi)容。
–segment, -sg 將視頻流分段存儲到多個文件,與存儲在單個文件中不同,該參數(shù)將視頻分段存儲在以毫秒為單位所指定長度的數(shù)個文件中。為了將生成的文件命名為不同的名稱,您需要在文件名中合適的位置添加 %04d 或類似的參數(shù)來讓文件名中顯示計數(shù)值。例如:
–segment 3000 -o video%04d.h264,將分割成每段長度 3000 毫秒(3 秒)并且命名為 video0001.h264,video0002.h264 等。每個段落都是可無縫連接的(段落之間不會丟幀),但每個片段的長度將取決于幀內(nèi)周期值,原因是每個分割的段落都需要起始于 I-frame 處。因此,每個段落都會等于或大于指定的時間長度。
–wrap, -wr 設(shè)置最大分段數(shù),當(dāng)輸出分段視頻時,該參數(shù)設(shè)置了最大分段數(shù),并且達(dá)到最大值時,將返回到初始的第一個段落。該參數(shù)賦予了錄制分段視頻的功能,但是將覆蓋之前生成的文件。所以,如果設(shè)置為 4,那么上面的例子中所生成的文件名為 video0001.h264,video0002.h264,video0003.h264,video0004.h264。而且,一旦 video0004.h264 文件錄制完畢后,計數(shù)將回到 1,并且 video0001.h264 將被覆蓋。
–start, -sn 設(shè)置初始段落數(shù),當(dāng)輸出分段視頻時,該參數(shù)為初始的段落數(shù),它允許從指定的段落恢復(fù)之前的錄制操作。默認(rèn)值為 1。
6.1.5應(yīng)用示例
? 圖像捕捉
默認(rèn)情況下,傳感器將以其支持的最高分辨率進(jìn)行捕捉??梢栽诿钚兄型ㄟ^使用 -w 和 -h 參數(shù)進(jìn)行更改。
# 兩秒鐘(時間單位為毫秒)延遲后拍攝一張照片,并保存為 image.jpg
raspistill -t 2000 -o image.jpg
# 拍攝一張自定義大小的照片。
raspistill -t 2000 -o image.jpg -w 640 -h 480
# 降低圖像質(zhì)量,減小文件尺寸
raspistill -t 2000 -o image.jpg -q 5
# 強(qiáng)制使預(yù)覽窗口出現(xiàn)在坐標(biāo)為 100,100 的位置,并且尺寸為寬 300 和高 200 像素。
raspistill -t 2000 -o image.jpg -p 100,100,300,200
# 禁用預(yù)覽窗口
raspistill -t 2000 -o image.jpg -n
# 將圖像保存為 PNG 文件(無損壓縮格式,但是要比 JPEG 速度慢)。注意,當(dāng)選擇圖像編碼時,文件擴(kuò)展名將被忽略。
raspistill -t 2000 -o image.png –e png
# 向 JPEG 文件中添加一些 EXIF 信息。該命令將會把作者名稱標(biāo)簽設(shè)置為 Dreamcolor,GPS 海拔高度為 123.5米。
raspistill -t 2000 -o image.jpg -x IFD0.Artist=Dreamcolor -x GPS.GPSAltitude=1235/10
# 設(shè)置浮雕風(fēng)格圖像特效
raspistill -t 2000 -o image.jpg -ifx emboss
# 設(shè)置 YUV 圖像的 U 和 V 通道為指定的值(128:128 為黑白圖像)
raspistill -t 2000 -o image.jpg -cfx 128:128
# 僅顯示兩秒鐘預(yù)覽圖像,而不對圖像進(jìn)行保存。
raspistill -t 2000
# 間隔獲取圖片,在 10 分鐘(10 分鐘 = 600000 毫秒)的時間里,每 10 秒獲取一張,并且命名為 image_number_001_today.jpg,image_number_002_today.jpg… 的形式,并且最后一張照片將命名為 latest.jpg。
raspistill -t 600000 -tl 10000 -o image_num_%03d_today.jpg -l latest.jpg
# 獲取一張照片并發(fā)送至標(biāo)準(zhǔn)輸出設(shè)備
raspistill -t 2000 -o -
# 獲取一張照片并保存為一個文件
raspistill -t 2000 -o - > my_file.jpg
#攝像頭一直工作,當(dāng)按下回車鍵時獲取一張照片。
raspistill -t 0 -k -o my_pics%02d.jpg
? 視頻捕捉
圖像尺寸和預(yù)覽設(shè)置與圖像捕捉相同。錄制的視頻默認(rèn)尺寸為 1080p(1920×1080)
# 使用默認(rèn)設(shè)置錄制一段 5 秒鐘的視頻片段(1080p30)
raspivid -t 5000 -o video.h264
# 使用指定碼率(3.5Mbits/s)錄制一段 5 秒鐘的視頻片段
raspivid -t 5000 -o video.h264 -b 3500000
# 使用指定幀率(5fps)錄制一段 5 秒鐘的視頻片段
raspivid -t 5000 -o video.h264 -f 5
# 發(fā)送到標(biāo)準(zhǔn)輸出設(shè)備一段 5 秒鐘經(jīng)過編碼的攝像頭流圖像
raspivid -t 5000 -o -
# 保存到文件一段 5 秒鐘經(jīng)過編碼的攝像頭流圖像
raspivid -t 5000 -o - > my_file.h264
6.1.6查看圖片
? 方式一
安裝可以通過終端打開截圖的shotwell。
$sudo apt-get install shotwell
查看圖片命令。
$ sudo shotwell image.jpg
? 方式二
安裝可以通過終端打開截圖的gpicview。
$sudo apt-get install gpicview
查看圖片命令。
$sudo gpicview image.jpg
6.1.7截圖
想在樹莓派上面截圖或截屏用截圖工具scrot 通過命令行就能做到。
1.安裝
在Raspbian上安裝scrot:
命令: sudo apt-get install scrot
2.截屏
截取整個屏幕:scrot (截取圖片的默認(rèn)名稱通常會有日期時間和分辨率,比如:“2016-10-10-062821_1024x768_scrot.png”)
指定截取圖片的名字:scrot example.png (那么文件名就會叫“example” ,擴(kuò)展名不要丟,另外改變擴(kuò)展名也不能改變文件格式)
指定文件位置:scrot /home/pi/Desktop/example.png(截圖文件“example.png”就會被保存在 “/home/pi/Desktop/” ,注意,只有路徑?jīng)]有文件名是不行的)
截取部分圖片:scrot -s 然后拖動要截圖的區(qū)域(scrot -s /home/pi/Desktop/example.png 命名和指定路徑)
? 其他命令參數(shù):
-h 顯示更多幫助
-v 獲取當(dāng)前版本
-d x 添加X秒的延遲拍攝
-c 添加一個倒計時延遲拍攝
-s 允許用戶用鼠標(biāo)捕捉特定區(qū)域
-u 捕捉當(dāng)前活動窗口
-q X 指定圖像質(zhì)量百分率X(默認(rèn)75)
-t X 創(chuàng)建一個百分比大小為X的縮略圖
-e 在截圖后指定一個命令來運行
6.1.8視屏播放
? MP4Box
raspivid 通常會將錄制的視頻保存為 .h264 格式的文件。而我們使用的很多播放器可能無法正常播放該格式的視頻文件。這就需要我們將生成的 .h264 格式的文件封裝到播放器能夠識別的視頻容器格式中(比如封裝為 mp4 格式)。有很多視頻處理軟件可以達(dá)到這個目的,您也可以直接在 Raspberry Pi 上直接進(jìn)行封裝。這里介紹的是“gpac”中的“MP4Box”。安裝和使用的方法如下:
$sudo apt-get update
$sudo apt-get install gpac
$sudo MP4Box -add filename.h264 filename.mp4
? Omxplayer
? 播放
$sudo omxplayer –o hdmi 文件名
? 播放控制
Key Action
加速
減速
j 上一條音軌
k 下一條音軌
i 上一節(jié)
o 下一節(jié)
n 上一條字幕軌
m 下一條字幕軌
s 顯示/不顯示字幕
q 退出
空格或p 暫停/繼續(xù)
- 增加音量
左 后退30
右 前進(jìn)30
上 后退600
下 前進(jìn)600
6.1.9 擴(kuò)展閱讀
樹莓派專用CSI攝像頭插到樹莓派的CSI口上并在在raspi-config中打開后就可以使用Raspistill命令直接使用,但如果在OpenCV中調(diào)用CSI攝像頭會出現(xiàn)無數(shù)據(jù)的現(xiàn)象(cv2.VideoCapture(0)這時不會報錯)。
這是因為樹莓派中的camera module是放在/boot/目錄中以固件形式加載的,不是一個標(biāo)準(zhǔn)的V4L2的攝像頭驅(qū)動,所以加載起來之后會找不到/dev/video0的設(shè)備節(jié)點。我們在/etc/modules里面添加一行bcm2835-v4l2(小寫的L)就能解決問題。
$sudo vi /etc/modules
添加:bcm2835-v4l2
6.2樹莓派實現(xiàn)動作捕捉、抓拍并存儲照片
6.2.1開通樹莓派SSH、VNC服務(wù)、開通攝像頭
將樹莓派接上鍵盤、鼠標(biāo)和顯示屏。進(jìn)入Raspbian系統(tǒng),打開命令行終端,輸入:
$ sudo raspi-config
圖3
當(dāng)然也可直接在樹莓派上配置。
遠(yuǎn)程登錄,默認(rèn)用戶名:pi, 默認(rèn)密碼:raspberry
6.2.2 PC機(jī)遠(yuǎn)程操作樹莓派
使用PC機(jī)遠(yuǎn)程通過命令行或VNC操作樹莓派要比樹莓派接上鍵盤鼠標(biāo),盯著小屏幕看方便很多。具體操作步驟如下:
1)樹莓派接入網(wǎng)絡(luò),在PC終端輸入:(注:Windows下要用PuTTY軟件作為命令行終端,Mac電腦可以直接輸入)
$ ssh pi@樹莓派的IP地址
輸入遠(yuǎn)程連接密碼。如果跳到:
pi@raspberrypi:~ $
說明連接成功,你現(xiàn)在可以在pc機(jī)上用命令行操作樹莓派了。
2)在pc機(jī)上用VNC連接樹莓派。關(guān)于SVN的使用請讀者看前面的章節(jié)。
6.2.3安裝動作捕捉腳本
將附件的腳本拷貝到樹莓派的 /home/pi 目錄下創(chuàng)建一個新目錄用來保存抓拍的照片:
$ sudo mkdir picam
然后就可以執(zhí)行腳本了:
$ sudo python picam.py
這時,如果有任何物體在移動,樹莓派的攝像頭就會抓拍,并保存到/home/pi/picam文件夾,在pc機(jī)上,就可以遠(yuǎn)程用VNC查看這些照片。
【附件】picam.py的代碼
#!/usr/bin/python
# original script by brainflakes, improved by pageauc, peewee2 and Kesthal
# www.raspberrypi.org/phpBB3/viewtopic.php?f=43&t=45235
# You need to install PIL to run this script
# type "sudo apt-get install python-imaging-tk" in an terminal window to do this
import StringIO
import subprocess
import os
import time
from datetime import datetime
from PIL import Image
# Motion detection settings:
# Threshold - how much a pixel has to change by to be marked as "changed"
# Sensitivity - how many changed pixels before capturing an image, needs to be higher if noisy view
# ForceCapture - whether to force an image to be captured every forceCaptureTime seconds, values True or False
# filepath - location of folder to save photos
# filenamePrefix - string that prefixes the file name for easier identification of files.
# diskSpaceToReserve - Delete oldest images to avoid filling disk. How much byte to keep free on disk.
# cameraSettings - "" = no extra settings; "-hf" = Set horizontal flip of image; "-vf" = Set vertical flip; "-hf -vf" = both horizontal and vertical flip
threshold = 10
sensitivity = 20
forceCapture = True
forceCaptureTime = 60 * 60 # Once an hour
filepath = "/home/pi/picam"
filenamePrefix = "capture"
diskSpaceToReserve = 40 * 1024 * 1024 # Keep 40 mb free on disk
cameraSettings = ""
# settings of the photos to save
saveWidth = 1296
saveHeight = 972
saveQuality = 15 # Set jpeg quality (0 to 100)
# Test-Image settings
testWidth = 100
testHeight = 75
# this is the default setting, if the whole image should be scanned for changed pixel
testAreaCount = 1
testBorders = [ [[1,testWidth],[1,testHeight]] ] # [ [[start pixel on left side,end pixel on right side],[start pixel on top side,stop pixel on bottom side]] ]
# testBorders are NOT zero-based, the first pixel is 1 and the last pixel is testWith or testHeight
# with "testBorders", you can define areas, where the script should scan for changed pixel
# for example, if your picture looks like this:
#
# ....XXXX
# ........
# ........
#
# "." is a street or a house, "X" are trees which move arround like crazy when the wind is blowing
# because of the wind in the trees, there will be taken photos all the time. to prevent this, your setting might look like this:
# testAreaCount = 2
# testBorders = [ [[1,50],[1,75]], [[51,100],[26,75]] ] # area y=1 to 25 not scanned in x=51 to 100
# even more complex example
# testAreaCount = 4
# testBorders = [ [[1,39],[1,75]], [[40,67],[43,75]], [[68,85],[48,75]], [[86,100],[41,75]] ]
# in debug mode, a file debug.bmp is written to disk with marked changed pixel an with marked border of scan-area
# debug mode should only be turned on while testing the parameters above
debugMode = False # False or True
# Capture a small test image (for motion detection)
def captureTestImage(settings, width, height):
command = "raspistill %s -w %s -h %s -t 200 -e bmp -n -o -" % (settings, width, height)
imageData = StringIO.StringIO()
imageData.write(subprocess.check_output(command, shell=True))
imageData.seek(0)
im = Image.open(imageData)
buffer = im.load()
imageData.close()
return im, buffer
# Save a full size image to disk
def saveImage(settings, width, height, quality, diskSpaceToReserve):
keepDiskSpaceFree(diskSpaceToReserve)
time = datetime.now()
filename = filepath + "/" + filenamePrefix + "-%04d%02d%02d-%02d%02d%02d.jpg" % (time.year, time.month, time.day, time.hour, time.minute, time.second)
subprocess.call("raspistill %s -w %s -h %s -t 200 -e jpg -q %s -n -o %s" % (settings, width, height, quality, filename), shell=True)
print "Captured %s" % filename
# Keep free space above given level
def keepDiskSpaceFree(bytesToReserve):
if (getFreeSpace() < bytesToReserve):
for filename in sorted(os.listdir(filepath + "/")):
if filename.startswith(filenamePrefix) and filename.endswith(".jpg"):
os.remove(filepath + "/" + filename)
print "Deleted %s/%s to avoid filling disk" % (filepath,filename)
if (getFreeSpace() > bytesToReserve):
return
# Get available disk space
def getFreeSpace():
st = os.statvfs(filepath + "/")
du = st.f_bavail * st.f_frsize
return du
# Get first image
image1, buffer1 = captureTestImage(cameraSettings, testWidth, testHeight)
# Reset last capture time
lastCapture = time.time()
while (True):
# Get comparison image
image2, buffer2 = captureTestImage(cameraSettings, testWidth, testHeight)
# Count changed pixels
changedPixels = 0
takePicture = False
if (debugMode): # in debug mode, save a bitmap-file with marked changed pixels and with visible testarea-borders
debugimage = Image.new("RGB",(testWidth, testHeight))
debugim = debugimage.load()
for z in xrange(0, testAreaCount): # = xrange(0,1) with default-values = z will only have the value of 0 = only one scan-area = whole picture
for x in xrange(testBorders[z][0][0]-1, testBorders[z][0][1]): # = xrange(0,100) with default-values
for y in xrange(testBorders[z][1][0]-1, testBorders[z][1][1]): # = xrange(0,75) with default-values; testBorders are NOT zero-based, buffer1[x,y] are zero-based (0,0 is top left of image, testWidth-1,testHeight-1 is botton right)
if (debugMode):
debugim[x,y] = buffer2[x,y]
if ((x == testBorders[z][0][0]-1) or (x == testBorders[z][0][1]-1) or (y == testBorders[z][1][0]-1) or (y == testBorders[z][1][1]-1)):
# print "Border %s %s" % (x,y)
debugim[x,y] = (0, 0, 255) # in debug mode, mark all border pixel to blue
# Just check green channel as it's the highest quality channel
pixdiff = abs(buffer1[x,y][1] - buffer2[x,y][1])
if pixdiff > threshold:
changedPixels += 1
if (debugMode):
debugim[x,y] = (0, 255, 0) # in debug mode, mark all changed pixel to green
# Save an image if pixels changed
if (changedPixels > sensitivity):
takePicture = True # will shoot the photo later
if ((debugMode == False) and (changedPixels > sensitivity)):
break # break the y loop
if ((debugMode == False) and (changedPixels > sensitivity)):
break # break the x loop
if ((debugMode == False) and (changedPixels > sensitivity)):
break # break the z loop
if (debugMode):
debugimage.save(filepath + "/debug.bmp") # save debug image as bmp
print "debug.bmp saved, %s changed pixel" % changedPixels
# else:
# print "%s changed pixel" % changedPixels
# Check force capture
if forceCapture:
if time.time() - lastCapture > forceCaptureTime:
takePicture = True
if takePicture:
lastCapture = time.time()
saveImage(cameraSettings, saveWidth, saveHeight, saveQuality, diskSpaceToReserve)
# Swap comparison buffers
image1 = image2
buffer1 = buffer2
6.2.4設(shè)置腳本開機(jī)啟動
在終端上輸入:
$ sudo vi /etc/rc.local
就會出現(xiàn)一個文本編輯器,
在文本內(nèi)容的exit 0 上面添加一行:
$ python /home/pi/picam.py
然后保存更改。
重啟樹莓派:
$ sudo reboot
即可實現(xiàn)開機(jī)自動運行。之所以選擇這個腳本是因為它簡潔,有效,而且還能自動清除過期的圖片。相比之下,motion這個軟件就顯得比較復(fù)雜。有興趣的同學(xué)還可以修改腳本實現(xiàn)抓拍后自動上傳到網(wǎng)盤,或發(fā)送郵件等功能。
##6.3樹莓派+motion 搭建攝像頭監(jiān)控系統(tǒng)
1. 安裝
$sudo apt install motion
2. 配置motion選項
備份配置文件
$sudo cp /etc/motion/motion.conf /etc/motion/motion.conf.bak
打開配置文檔
$sudo vim /etc/motion/motion.conf
更改文檔中以下內(nèi)容
daemon on #開啟守護(hù)進(jìn)程(選配)
target_dir /home/pi/motion-images #圖片保存的路徑
#videodevice /dev/video0 #攝像頭設(shè)備(默認(rèn))可修改
stream_localhost off #允許通過網(wǎng)頁查看攝像頭
stream_auth_method 2 #開啟密碼認(rèn)證
stream_authentication 用戶名:密碼 #網(wǎng)頁查看攝像頭的用戶名和密碼
創(chuàng)建一個目錄來存儲Motion拍下的照片
$mkdir ~/motion-images
官方詳細(xì)配置說明:http:///foswiki/bin/view/Motion/ConfigFileOptions
3.開啟motion
$ sudo service motion start
$sudo motion
用瀏覽器登陸樹莓派的網(wǎng)址 192.168.3.233:8081 ,會彈出用戶名和密碼的對話框,輸入用戶名和密碼后看到圖像就成功了。需要登錄兩次。
圖4
4. 設(shè)置為開機(jī)運行(選配)
$sudo vim /etc/rc.local
在exit 0前添加 motion , 保存,就會開機(jī)自動運行了。
5. 部分詳細(xì)配置選項的翻譯
表1
ffmpeg_duplicate_frames 調(diào)試模式,只看到變化的圖像
選項 | Range/Values Default | 說明 |
auto_brightness | Values: on,off
Default: off | 讓motion自動調(diào)節(jié)視頻的的亮度,只適用于不帶有自動亮度調(diào)節(jié)的攝像機(jī) |
brightness | Values: 0-255
Default: 0 (disabled) | 調(diào)整攝像機(jī)的亮度 |
saturation | Values: 0 - 255
Default: 0 (disabled) | 調(diào)整攝像機(jī)的顏色飽和度 |
hue | Values: 0 - 255
Default: 0 (disabled) | 調(diào)整攝像機(jī)的色調(diào) |
contrast | Values: 0-255
Default: 0 (disabled) | 調(diào)整攝像機(jī)的對比度 |
daemon | Values: on,off
Default: off | 以守護(hù)進(jìn)程在后臺運行。這個選項只能放在motion.conf,不能放在 thread config file |
emulate_motion | Values: on, off
Default: off | 即使沒有運動物體也要保存圖像 |
ffmpeg_output_movies | Values: on, off
Default: off | 是否保存視頻 |
ffmpeg_bps | Values: 0 - 9999999
Default: 400000 | 視頻比特率 |
ffmpeg_variable_bitrate | Values: 0, 2 -31
Default: 0 (disabled) | 動態(tài)比特率,如果開啟這個功能ffmpeg_bps將被忽略,0為關(guān)閉,2為最好質(zhì)量,31為最差質(zhì)量 |
Values: on, off
Default: on | 為了達(dá)到每秒的幀數(shù)要求,會復(fù)制一下幀填充空白時間,關(guān)掉這個功能后每個幀都緊接下一個幀,看起來像快進(jìn) |
ffmpeg_output_debug_movies | Values: on, off
Default: off | ffmpeg_video_codec | Values:mpeg4, msmpeg4, swf, flv, ffv1, mov, ogg, mp4, mkv, hevc
Default: mpeg4 | 視頻格式 |
framerate | Values: 2 - 100
Default: 100 (no limit) | 幀速率,每秒多少幀 |
frequency | Values: 0 - 999999
Default: 0 (Not set) | 頻率協(xié)調(diào) Hz |
lightswitch | Values: 0 - 100
Default: 0 (disabled) | 忽略光照強(qiáng)度改變引起的變化 |
locate_motion_mode | Values: on, off, preview
Default: off | 給運動物體用方框標(biāo)出 |
locate_motion_style | Values: box, redbox, cross, redcross
Default: box | 標(biāo)記風(fēng)格 |
max_movie_time | Values: 0 (infinite) - 2147483647
Default: 3600 | 最大視頻時間 |
minimum_frame_time | Values: 0 - 2147483647
Default: 0 | 最小幀間隔,設(shè)置為0表示采用攝像頭的幀率 |
minimum_motion_frames | Values: 1 - 1000s
Default: 1 | 捕捉持續(xù)至少指定時間的運動幀 |
movie_filename | Values: Max 4095 characters
Default: %v-%Y%m%d%H%M%S | 視頻的文件名 |
ffmpeg_timelapse | Values: 0-2147483647
Default: 0 (disabled) | 間隔時間,拍攝延時視頻 |
ffmpeg_timelapse_mode | Values: hourly, daily, weekly-sunday, weekly-monday, monthly, manual
Default: daily | 延時拍攝模式 |
timelapse_filename | Values: Max 4095 characters
Default: %v-%Y%m%d-timelapse | 延時拍攝的文件名 |
output_pictures | Values: on,off,first,best,center
Default: on | 是否保存圖片和模式設(shè)置 |
output_debug_pictures | Values: on,off
Default: off | 圖片調(diào)試模式,只輸出運動物體 |
picture_filename | Values: Max 4095 characters
Default: %v-%Y%m%d%H%M%S-%q | 圖片文件名 |
picture_type | Values: jpeg,ppm
Default: jpeg | 圖片類型 |
post_capture | Values: 0 - 2147483647
Default: 0 (disabled) | 運動在持續(xù)多少幀之后才被捕捉 |
pre_capture | Values: 0 - 100s
Default: 0 (disabled) | 輸出圖像包括捕捉到運動的前幾秒 |
quality | Values: 1 - 100
Default: 75 | jpg圖像的質(zhì)量 |
quiet | Values: on, off
Default: off | 安靜模式,檢測到運動不輸出嗶 |
rotate | Values: 0, 90, 180, 270
Default: 0 (not rotated) | 旋轉(zhuǎn)圖像角度 |
stream_auth_method | Values: 0,1,2
Default: 0 | 網(wǎng)頁監(jiān)控身份認(rèn)證方法:0-無,1-基本,2-MD5 |
stream_authentication | Values: username:password
Default: Not defined | 網(wǎng)頁監(jiān)控用戶名和密碼 |
stream_limit | Values: 0 - 2147483647
Default: 0 (unlimited) | 限制幀的數(shù)量 |
stream_localhost | Values: on, off
Default: on | 是否只能本地訪問網(wǎng)絡(luò)攝像頭 |
stream_maxrate | Values: 1 - 100
Default: 1 | 限制網(wǎng)絡(luò)攝像頭幀速率 |
stream_port | Values: 0 - 65535
Default: 0 (disabled) | 網(wǎng)絡(luò)攝像頭端口 |
stream_quality | Values: 1 - 100
Default: 50 | 網(wǎng)絡(luò)攝像頭傳輸質(zhì)量 |
switchfilter | Values: on, off
Default: off | 過濾器開關(guān),過濾器用來區(qū)分真正的運動和噪聲 |
target_dir | Values: Max 4095 characters
Default: Not defined = current working directory | 視頻和圖片的保存路徑 |
videodevice | Values: Max 4095 characters
Default: /dev/video0 | 攝像頭設(shè)備名 |
height | Values: Device Dependent
Default: 288 | 圖像高度,范圍跟攝像機(jī)相關(guān) |
width | Values: Device Dependent
Default: 352 | 圖像寬度,范圍跟攝像機(jī)相關(guān) |
process_id_file | Values: Max 4095 characters
Default: Not defined | 保存PID的文件,推薦/var/run/motion.pid |
database_busy_timeout | Values: 0 .. positive integer
Default: 0 | 數(shù)據(jù)庫等待超時時間,毫秒 |
|