Использование motion для видеонаблюдения.
В моем случае использовались ip камеры D-Link DCS 910. Вообще moton умеет работать с устройствами v4l, т.е. почти слюбыми камерами и платами захвата, тогда источник указывается через videodevice /dev/video0, но у нас эта строка закомментирована и используется netcam_url.
Вот основной конфиг (перезалил конфиг для новой версии 3.2.12):
#cat /etc/motion/motion.conf
# Rename this distribution example file to motion.conf## This config file was generated by motion 3.2.12############################################################# Daemon############################################################# Start in daemon (background) mode and release terminal (default: off)daemon on# File to store the process ID, also called pid file. (default: not defined)process_id_file /var/run/motion/motion.pid############################################################# Basic Setup Mode############################################################# Start in Setup-Mode, daemon disabled. (default: off)setup_mode off############################################################ Capture device options############################################################# Videodevice to be used for capturing (default /dev/video0)# for FreeBSD default is /dev/bktr0#videodevice /dev/video0# v4l2_palette allows to choose preferable palette to be use by motion# to capture from those supported by your videodevice. (default: 8)# E.g. if your videodevice supports both V4L2_PIX_FMT_SBGGR8 and# V4L2_PIX_FMT_MJPEG then motion will by default use V4L2_PIX_FMT_MJPEG.# Setting v4l2_palette to 1 forces motion to use V4L2_PIX_FMT_SBGGR8# instead.## Values :# V4L2_PIX_FMT_SN9C10X : 0 'S910'# V4L2_PIX_FMT_SBGGR8 : 1 'BA81'# V4L2_PIX_FMT_MJPEG : 2 'MJPEG'# V4L2_PIX_FMT_JPEG : 3 'JPEG'# V4L2_PIX_FMT_RGB24 : 4 'RGB3'# V4L2_PIX_FMT_UYVY : 5 'UYVY'# V4L2_PIX_FMT_YUYV : 6 'YUYV'# V4L2_PIX_FMT_YUV422P : 7 '422P'# V4L2_PIX_FMT_YUV420 : 8 'YU12'v4l2_palette 8# Tuner device to be used for capturing using tuner as source (default /dev/tuner0)# This is ONLY used for FreeBSD. Leave it commented out for Linux; tunerdevice /dev/tuner0# The video input to be used (default: 8)# Should normally be set to 0 or 1 for video/TV cards, and 8 for USB camerasinput 8# The video norm to use (only for video capture and TV tuner cards)# Values: 0 (PAL), 1 (NTSC), 2 (SECAM), 3 (PAL NC no colour). Default: 0 (PAL)norm 0# The frequency to set the tuner to (kHz) (only for TV tuner cards) (default: 0)frequency 0# Rotate image this number of degrees. The rotation affects all saved images as# well as mpeg movies. Valid values: 0 (default = no rotation), 90, 180 and 270.rotate 0# Image width (pixels). Valid range: Camera dependent, default: 352width 320# Image height (pixels). Valid range: Camera dependent, default: 288height 240# Maximum number of frames to be captured per second.# Valid range: 2-100. Default: 100 (almost no limit).framerate 2# Minimum time in seconds between capturing picture frames from the camera.# Default: 0 = disabled - the capture rate is given by the camera framerate.# This option is used when you want to capture images at a rate lower than 2 per second.minimum_frame_time 0# URL to use if you are using a network camera, size will be autodetected (incl http:// ftp:// or file:///)# Must be a URL that returns single jpeg pictures or a raw mjpeg stream. Default: Not defined; netcam_url value# Username and password for network camera (only if required). Default: not defined# Syntax is user:password; netcam_userpass value# The setting for keep-alive of network socket, should improve performance on compatible net cameras.# 1.0: The historical implementation using HTTP/1.0, closing the socket after each http request.# keep_alive: Use HTTP/1.0 requests with keep alive header to reuse the same connection.# 1.1: Use HTTP/1.1 requests that support keep alive as default.# Default: 1.0; netcam_http 1.0# URL to use for a netcam proxy server, if required, e.g. "http://myproxy".# If a port number other than 80 is needed, use "http://myproxy:1234".# Default: not defined; netcam_proxy value# Set less strict jpeg checks for network cameras with a poor/buggy firmware.# Default: offnetcam_tolerant_check off# Let motion regulate the brightness of a video device (default: off).# The auto_brightness feature uses the brightness option as its target value.# If brightness is zero auto_brightness will adjust to average brightness value 128.# Only recommended for cameras without auto brightnessauto_brightness off# Set the initial brightness of a video device.# If auto_brightness is enabled, this value defines the average brightness level# which Motion will try and adjust to.# Valid range 0-255, default 0 = disabledbrightness 0# Set the contrast of a video device.# Valid range 0-255, default 0 = disabledcontrast 0# Set the saturation of a video device.# Valid range 0-255, default 0 = disabledsaturation 0# Set the hue of a video device (NTSC feature).# Valid range 0-255, default 0 = disabledhue 0############################################################# Round Robin (multiple inputs on same video device name)############################################################# Number of frames to capture in each roundrobin step (default: 1)roundrobin_frames 1# Number of frames to skip before each roundrobin step (default: 1)roundrobin_skip 1# Try to filter out noise generated by roundrobin (default: off)switchfilter off############################################################# Motion Detection Settings:############################################################# Threshold for number of changed pixels in an image that# triggers motion detection (default: 1500)threshold 1500# Automatically tune the threshold down if possible (default: off)threshold_tune off# Noise threshold for the motion detection (default: 32)noise_level 32# Automatically tune the noise threshold (default: on)noise_tune on# Despeckle motion image using (e)rode or (d)ilate or (l)abel (Default: not defined)# Recommended value is EedDl. Any combination (and number of) of E, e, d, and D is valid.# (l)abeling must only be used once and the 'l' must be the last letter.# Comment out to disabledespeckle EedDl# Detect motion in predefined areas (1 - 9). Areas are numbered like that: 1 2 3# A script (on_area_detected) is started immediately when motion is 4 5 6# detected in one of the given areas, but only once during an event. 7 8 9# One or more areas can be specified with this option. (Default: not defined); area_detect value# PGM file to use as a sensitivity mask.# Full path name to. (Default: not defined); mask_file value# Dynamically create a mask file during operation (default: 0)# Adjust speed of mask changes from 0 (off) to 10 (fast)smart_mask_speed 0# Ignore sudden massive light intensity changes given as a percentage of the picture# area that changed intensity. Valid range: 0 - 100 , default: 0 = disabledlightswitch 0# Picture frames must contain motion at least the specified number of frames# in a row before they are detected as true motion. At the default of 1, all# motion is detected. Valid range: 1 to thousands, recommended 1-5minimum_motion_frames 1# Specifies the number of pre-captured (buffered) pictures from before motion# was detected that will be output at motion detection.# Recommended range: 0 to 5 (default: 0)# Do not use large values! Large values will cause Motion to skip video frames and# cause unsmooth mpegs. To smooth mpegs use larger values of post_capture instead.pre_capture 0# Number of frames to capture after motion is no longer detected (default: 0)post_capture 0# Gap is the seconds of no motion detection that triggers the end of an event# An event is defined as a series of motion images taken within a short timeframe.# Recommended value is 60 seconds (Default). The value 0 is allowed and disables# events causing all Motion to be written to one single mpeg file and no pre_capture.gap 60# Maximum length in seconds of an mpeg movie# When value is exceeded a new mpeg file is created. (Default: 0 = infinite)max_mpeg_time 0# Always save images even if there was no motion (default: off)output_all off############################################################# Image File Output############################################################# Output 'normal' pictures when motion is detected (default: on)# Valid values: on, off, first, best, center# When set to 'first', only the first picture of an event is saved.# Picture with most motion of an event is saved when set to 'best'.# Picture with motion nearest center of picture is saved when set to 'center'.# Can be used as preview shot for the corresponding movie.output_normal on# Output pictures with only the pixels moving object (ghost images) (default: off)output_motion off# The quality (in percent) to be used by the jpeg compression (default: 75)quality 75# Output ppm images instead of jpeg (default: off)ppm off############################################################# FFMPEG related options# Film (mpeg) file output, and deinterlacing of the video input# The options movie_filename and timelapse_filename are also used# by the ffmpeg feature############################################################# Use ffmpeg to encode mpeg movies in realtime (default: off)ffmpeg_cap_new on# Use ffmpeg to make movies with only the pixels moving# object (ghost images) (default: off)ffmpeg_cap_motion off# Use ffmpeg to encode a timelapse movie# Default value 0 = off - else save frame every Nth secondffmpeg_timelapse 0# The file rollover mode of the timelapse video# Valid values: hourly, daily (default), weekly-sunday, weekly-monday, monthly, manualffmpeg_timelapse_mode daily# Bitrate to be used by the ffmpeg encoder (default: 400000)# This option is ignored if ffmpeg_variable_bitrate is not 0 (disabled)ffmpeg_bps 500000# Enables and defines variable bitrate for the ffmpeg encoder.# ffmpeg_bps is ignored if variable bitrate is enabled.# Valid values: 0 (default) = fixed bitrate defined by ffmpeg_bps,# or the range 2 - 31 where 2 means best quality and 31 is worst.ffmpeg_variable_bitrate 0# Codec to used by ffmpeg for the video compression.# Timelapse mpegs are always made in mpeg1 format independent from this option.# Supported formats are: mpeg1 (ffmpeg-0.4.8 only), mpeg4 (default), and msmpeg4.# mpeg1 - gives you files with extension .mpg# mpeg4 or msmpeg4 - gives you files with extension .avi# msmpeg4 is recommended for use with Windows Media Player because# it requires no installation of codec on the Windows client.# swf - gives you a flash film with extension .swf# flv - gives you a flash video with extension .flv# ffv1 - FF video codec 1 for Lossless Encoding ( experimental )# mov - QuickTime ( testing )ffmpeg_video_codec mpeg4# Use ffmpeg to deinterlace video. Necessary if you use an analog camera# and see horizontal combing on moving objects in video or pictures.# (default: off)ffmpeg_deinterlace off############################################################# Snapshots (Traditional Periodic Webcam File Output)############################################################# Make automated snapshot every N seconds (default: 0 = disabled)snapshot_interval 0############################################################# Text Display# %Y = year, %m = month, %d = date,# %H = hour, %M = minute, %S = second, %T = HH:MM:SS,# %v = event, %q = frame number, %t = thread (camera) number,# %D = changed pixels, %N = noise level, \n = new line,# %i and %J = width and height of motion area,# %K and %L = X and Y coordinates of motion center# %C = value defined by text_event - do not use with text_event!# You can put quotation marks around the text to allow# leading spaces############################################################# Locate and draw a box around the moving object.# Valid values: on, off and preview (default: off)# Set to 'preview' will only draw a box in preview_shot pictures.locate off# Draws the timestamp using same options as C function strftime(3)# Default: %Y-%m-%d\n%T = date in ISO format and time in 24 hour clock# Text is placed in lower right cornertext_right %Y-%m-%d\n%T-%q# Draw a user defined text on the images using same options as C function strftime(3)# Default: Not defined = no text# Text is placed in lower left corner; text_left CAMERA %t# Draw the number of changed pixed on the images (default: off)# Will normally be set to off except when you setup and adjust the motion settings# Text is placed in upper right cornertext_changes off# This option defines the value of the special event conversion specifier %C# You can use any conversion specifier in this option except %C. Date and time# values are from the timestamp of the first image in the current event.# Default: %Y%m%d%H%M%S# The idea is that %C can be used filenames and text_left/right for creating# a unique identifier for each event.text_event %Y%m%d%H%M%S# Draw characters at twice normal size on images. (default: off)text_double off############################################################# Target Directories and filenames For Images And Films# For the options snapshot_, jpeg_, mpeg_ and timelapse_filename# you can use conversion specifiers# %Y = year, %m = month, %d = date,# %H = hour, %M = minute, %S = second,# %v = event, %q = frame number, %t = thread (camera) number,# %D = changed pixels, %N = noise level,# %i and %J = width and height of motion area,# %K and %L = X and Y coordinates of motion center# %C = value defined by text_event# Quotation marks round string are allowed.############################################################# Target base directory for pictures and films# Recommended to use absolute path. (Default: current working directory)target_dir /usr/local/apache2/htdocs/cam1# File path for snapshots (jpeg or ppm) relative to target_dir# Default: %v-%Y%m%d%H%M%S-snapshot# Default value is equivalent to legacy oldlayout option# For Motion 3.0 compatible mode choose: %Y/%m/%d/%H/%M/%S-snapshot# File extension .jpg or .ppm is automatically added so do not include this.# Note: A symbolic link called lastsnap.jpg created in the target_dir will always# point to the latest snapshot, unless snapshot_filename is exactly 'lastsnap'snapshot_filename %v-%Y%m%d%H%M%S-snapshot# File path for motion triggered images (jpeg or ppm) relative to target_dir# Default: %v-%Y%m%d%H%M%S-%q# Default value is equivalent to legacy oldlayout option# For Motion 3.0 compatible mode choose: %Y/%m/%d/%H/%M/%S-%q# File extension .jpg or .ppm is automatically added so do not include this# Set to 'preview' together with best-preview feature enables special naming# convention for preview shots. See motion guide for details#jpeg_filename %v-%Y%m%d%H%M%S-%qjpeg_filename /img/%Y-%m-%d/%H/%M-%S-%q# File path for motion triggered ffmpeg films (mpeg) relative to target_dir# Default: %v-%Y%m%d%H%M%S# Default value is equivalent to legacy oldlayout option# For Motion 3.0 compatible mode choose: %Y/%m/%d/%H%M%S# File extension .mpg or .avi is automatically added so do not include this# This option was previously called ffmpeg_filenamemovie_filename /video/%Y-%m-%d/%H-%M-%S# File path for timelapse mpegs relative to target_dir# Default: %Y%m%d-timelapse# Default value is near equivalent to legacy oldlayout option# For Motion 3.0 compatible mode choose: %Y/%m/%d-timelapse# File extension .mpg is automatically added so do not include thistimelapse_filename %Y%m%d-timelapse############################################################# Live Webcam Server############################################################# The mini-http server listens to this port for requests (default: 0 = disabled)webcam_port 8081# Quality of the jpeg (in percent) images produced (default: 50)webcam_quality 50# Output frames at 1 fps when no motion is detected and increase to the# rate given by webcam_maxrate when motion is detected (default: off)webcam_motion on# Maximum framerate for webcam streams (default: 1)webcam_maxrate 1# Restrict webcam connections to localhost only (default: on)webcam_localhost off# Limits the number of images per connection (default: 0 = unlimited)# Number can be defined by multiplying actual webcam rate by desired number of seconds# Actual webcam rate is the smallest of the numbers framerate and webcam_maxratewebcam_limit 0############################################################# HTTP Based Control############################################################# TCP/IP port for the http server to listen on (default: 0 = disabled)control_port 8080# Restrict control connections to localhost only (default: on)control_localhost off# Output for http server, select off to choose raw text plain (default: on)control_html_output on# Authentication for the http based control. Syntax username:password# Default: not defined (Disabled); control_authentication username:password############################################################# Tracking (Pan/Tilt)############################################################# Type of tracker (0=none (default), 1=stepper, 2=iomojo, 3=pwc, 4=generic, 5=uvcvideo)# The generic type enables the definition of motion center and motion size to# be used with the conversion specifiers for options like on_motion_detectedtrack_type 0# Enable auto tracking (default: off)track_auto off# Serial port of motor (default: none); track_port value# Motor number for x-axis (default: 0)track_motorx 0# Motor number for y-axis (default: 0)track_motory 0# Maximum value on x-axis (default: 0)track_maxx 0# Maximum value on y-axis (default: 0)track_maxy 0# ID of an iomojo camera if used (default: 0)track_iomojo_id 0# Angle in degrees the camera moves per step on the X-axis# with auto-track (default: 10)# Currently only used with pwc type camerastrack_step_angle_x 10# Angle in degrees the camera moves per step on the Y-axis# with auto-track (default: 10)# Currently only used with pwc type camerastrack_step_angle_y 10# Delay to wait for after tracking movement as number# of picture frames (default: 10)track_move_wait 10# Speed to set the motor to (stepper motor option) (default: 255)track_speed 255# Number of steps to make (stepper motor option) (default: 40)track_stepsize 40############################################################# External Commands, Warnings and Logging:# You can use conversion specifiers for the on_xxxx commands# %Y = year, %m = month, %d = date,# %H = hour, %M = minute, %S = second,# %v = event, %q = frame number, %t = thread (camera) number,# %D = changed pixels, %N = noise level,# %i and %J = width and height of motion area,# %K and %L = X and Y coordinates of motion center# %C = value defined by text_event# %f = filename with full path# %n = number indicating filetype# Both %f and %n are only defined for on_picture_save,# on_movie_start and on_movie_end# Quotation marks round string are allowed.############################################################# Do not sound beeps when detecting motion (default: on)# Note: Motion never beeps when running in daemon mode.quiet on# Command to be executed when an event starts. (default: none)# An event starts at first motion detected after a period of no motion defined by gap; on_event_start value# Command to be executed when an event ends after a period of no motion# (default: none). The period of no motion is defined by option gap.; on_event_end value# Command to be executed when a picture (.ppm|.jpg) is saved (default: none)# To give the filename as an argument to a command append it with %f; on_picture_save value# Command to be executed when a motion frame is detected (default: none); on_motion_detected value# Command to be executed when motion in a predefined area is detected# Check option 'area_detect'. (default: none); on_area_detected value# Command to be executed when a movie file (.mpg|.avi) is created. (default: none)# To give the filename as an argument to a command append it with %f; on_movie_start value# Command to be executed when a movie file (.mpg|.avi) is closed. (default: none)# To give the filename as an argument to a command append it with %f; on_movie_end value# Command to be executed when a camera can't be opened or if it is lost# NOTE: There is situations when motion doesn't detect a lost camera!# It depends on the driver, some drivers don't detect a lost camera at all# Some hang the motion thread. Some even hang the PC! (default: none); on_camera_lost value############################################################# Common Options For MySQL and PostgreSQL database features.# Options require the MySQL/PostgreSQL options to be active also.############################################################# Log to the database when creating motion triggered image file (default: on)sql_log_image on# Log to the database when creating a snapshot image file (default: on)sql_log_snapshot on# Log to the database when creating motion triggered mpeg file (default: off)sql_log_mpeg off# Log to the database when creating timelapse mpeg file (default: off)sql_log_timelapse off# SQL query string that is sent to the database# Use same conversion specifiers has for text features# Additional special conversion specifiers are# %n = the number representing the file_type# %f = filename with full path# Default value:# insert into security(camera, filename, frame, file_type, time_stamp, text_event) values('%t', '%f', '%q', '%n', '%Y-%m-%d %T', '%C')sql_query insert into security(camera, filename, frame, file_type, time_stamp, event_time_stamp) values('%t', '%f', '%q', '%n', '%Y-%m-%d %T', '%C')############################################################# Database Options For MySQL############################################################# Mysql database to log to (default: not defined); mysql_db value# The host on which the database is located (default: localhost); mysql_host value# User account name for MySQL database (default: not defined); mysql_user value# User password for MySQL database (default: not defined); mysql_password value############################################################# Database Options For PostgreSQL############################################################# PostgreSQL database to log to (default: not defined); pgsql_db value# The host on which the database is located (default: localhost); pgsql_host value# User account name for PostgreSQL database (default: not defined); pgsql_user value# User password for PostgreSQL database (default: not defined); pgsql_password value# Port on which the PostgreSQL database is located (default: 5432); pgsql_port 5432############################################################# Video Loopback Device (vloopback project)############################################################# Output images to a video4linux loopback device# The value '-' means next available (default: not defined); video_pipe value# Output motion images to a video4linux loopback device# The value '-' means next available (default: not defined); motion_video_pipe value############################################################### Thread config files - One for each camera.# Except if only one camera - You only need this config file.# If you have more than one camera you MUST define one thread# config file for each camera in addition to this config file.############################################################### Remember: If you have more than one camera you must have one# thread file for each camera. E.g. 2 cameras requires 3 files:# This motion.conf file AND thread1.conf and thread2.conf.# Only put the options that are unique to each camera in the# thread config files.; thread /usr/local/etc/thread1.conf; thread /usr/local/etc/thread2.conf; thread /usr/local/etc/thread3.conf; thread /usr/local/etc/thread4.confthread /etc/motion/cam1.confthread /etc/motion/cam2.confОпций много, но они описаны хорошо в конфигурационном файле, читайте, не ленитесь, я тут многое не указал, что не использую, но Вам может оказаться полезным.
и так конфиг одной из камер
#cat /etc/motion/cam1.conf
rotate 0width 640height 480framerate 4netcam_url http://192.168.1.100/video.cginetcam_userpass login:passwordtarget_dir /var/www/html/motion/cam1stream_port 8081Для каждой камеры, делаем вот такой небольшой конфиг и включаем в основной при помощи thread. Не забываем указывать различные значения для stream_port.
При таком раскладе, у нас будет происходить запись в директории target_dir, в них нужно создать папки img и video, как говорится мухи отдельно, котлеты отдельно :-) для изображений будут создаваться файлы вида /год-месяц-число/час/мин-сек-N.jpg. Для видео день на часы не делится, смысла нет.
Что бы смотреть все это дело в реальном времени можно использовать простой скрипт на php, можно даже написать на чистом html, но мне на пыхпыхе удобнее.
<?php $camp[1]="8081"; $camp[2]="8082"; $camp[3]="8083"; $camp[4]="8084"; $width[0]="640"; $width[1]="480"; $width[2]="320"; $height[0]="480"; $height[1]="360"; $height[2]="240"; require "function.php"; $action=$_GET["action"]; $basefile=basename(__FILE__); $dvrmode=$_GET["dvrmode"]; if (!$dvrmode){$dvrmode=2;}function show($cam,$size){global $width,$height,$camp;echo "<img src=\"http://192.168.1.56:".$camp[$cam]."/stream.mjpg\" width=\"".$width["$size"]."\" height=\"".$height["$size"]."\" border=1>";}switch($action){case "view":standarthead();$cam=$_GET["cam"];echo "<table><tr><td align=center>View of cam-1<br><a href=./?action=view&cam=1><img src=\"http://192.168.1.56:".$camp[$cam]."/stream.mjpg\" width=\"640\" height=\"480\" border=1></a></td></tr></table>";button("./","Back");endpage();default:standarthead();if ($dvrmode==1){echo "<table><tr><td align=center>cam-1<br><a href=./?action=view&cam=1>";show(1,0);echo "</a></td></tr></table>";}if ($dvrmode==2){echo "<table><tr><td align=center>cam-1<br><a href=./?action=view&cam=1>";show(1,1);echo "<a></td><td align=center>cam-2<br><a href=./?action=view&cam=2>";show(2,1);echo "</a></td></tr></table>";}if ($dvrmode==4){echo "<table><tr><td align=center>cam-1<br><a href=./?action=view&cam=1>";show (1,2);echo "</a></td><td align=center>cam-2<br><a href=./?action=view&cam=2>";show (2,2);echo "</td><tr><td align=center>cam-3<br><a href=./?action=view&cam=3>";show (3,2);echo "</a></td><td align=center>cam-4<br><a href=./?action=view&cam=4>";show (4,2);echo "</a></td></tr></table>";}echo "<table><tr><td>";button("./?dvrmode=1","1");echo "<td>";button("./?dvrmode=2","2");echo "<td>";button("./?dvrmode=4","4");echo "</table>";endpage();}?>и еще файлик с функциями
<?php//DVR//function modulefunction standarthead(){echo "<html><head><meta http-equiv='Content-Type' content='text/html; charset=utf-8'><meta HTTP-EQUIV='Pragma' CONTENT='no-cache'><meta HTTP-EQUIV='Cache-Control' content='no-cache'><link rel=\"stylesheet\" type=\"text/css\" href=\"dvr.css\"><title>Trigran Digital Video Recorder</title><body><br><center>\n<b>Trigran Digital Video Recorder</b><br>";}function endpage(){ echo "<p><font size=1>Trigran DVR version 0.1 beta by Yury Konovalov © 2010"; echo "</html>"; exit;}function linb($name,$address,$title){echo "<a class=\"dlnors\" href=\"$address\" onmouseout=\"this.className='dlnors'\" onmouseover=\"this.className='dlsels'\" title=\"$title\" target=\".blank\">$name</a>\n";}function button($address,$title){echo "<p><form method=\"post\" action=\"$address\"><input type=\"hidden\" value=\"4ie6\">";subbut($title);echo "</form>\n";}?>dvr.css
H1 { color: #000000; FONT-STYLE: normal; font-weight: bold; font-size: 14pt; text-align: center; FONT-FAMILY: arial; } a.normal { color: #000000; font-size: 10pt; font-weight: bold; text-decoration: none; cursor: arrow; FONT-FAMILY: Arial; } a.selected { color: #ff0000; font-size: 10pt; font-weight: bold; text-decoration: none; cursor: arrow; FONT-FAMILY: Arial; } .inputtext { background: #ccccdd; color: #000000; FONT-weight: bold; border-width: 1px 1px 1px 1px; } .button1off { BACKGROUND-COLOR: #ccccdd; color: #000000; FONT-FAMILY: arial; FONT-weight: bold; font-size: 10pt; text-align: center; border-width: 1px 1px 1px 1px; } .button1on { BACKGROUND-COLOR: #ccccdd; color: #0000ff; FONT-FAMILY: arial; FONT-weight: bold; font-size: 10pt; text-align: center; border-width: 1px 1px 1px 1px; } .bgtable { BACKGROUND-COLOR: #0000cc; color: #000000; FONT-FAMILY: arial; } .headtable { BACKGROUND-COLOR: #cccccc; color: #000000; FONT-FAMILY: arial; FONT-weight: bold; font-size: 10pt; } a.dlsels { color: #0000ff; font-size: 10pt; font-weight: bold; cursor: hand; text-decoration: yes; } a.dlnors { color: #000000; font-size: 10pt; font-weight: bold; cursor: hand; text-decoration: none; } .td1 { BACKGROUND-COLOR: #FFFBEF; font-size: 12pt; } .td2 { BACKGROUND-COLOR: #FFFFFF; font-size: 12pt; } BODY { FONT-FAMILY: arial; color: #000000; background-color: #eeeefe; font-size: 10pt; }Тут конечно много лишнего, но лень удалять :-)
Напомню, что для видеорегистратора очень важно точное время, поэтому стоит установить ntpd или что-то подобное. Так как мы разрешили доступ к stream video отовсюду, то нужно настроить iptables что бы это исправить.
init скрипт для автоматического запуска
#!/bin/sh## chkconfig: 35 81 29# description: Motion#WITHOUT_RC_COMPAT=1LOCKFILE=/var/lock/subsys/motion# source function library. /etc/init.d/functionsRETVAL=0start(){ motion -c /etc/motion/motion.conf success}stop(){ killall motion success}case "$1" in start) start ;; stop) stop ;; status) exit ;; *) msg_usage "${0##*/} {start|stop|status}" RETVAL=1esacexit $RETVALВот и результат.
Добавляем в крон запись для запуска скрипта очистки старых файлов
10 0 * * * /opt/clearoldА вот и сам скрипт, в данном случае остаются только записи за последние 15 дней
#!/bin/shfind /var/www/html/motion/cam1/img/* -mtime +15 -exec rm -rf {} \;find /var/www/html/motion/cam2/img/* -mtime +15 -exec rm -rf {} \;find /var/www/html/motion/cam1/video/* -mtime +15 -exec rm -rf {} \;find /var/www/html/motion/cam2/video/* -mtime +15 -exec rm -rf {} \;Ну пока все ...