удобная штука

Код: Выделить всё
./configure --with-libarch=lib64 --with-webdir=/var/www/html --with-mysql=/usr/local --with-ffmpeg=/usr/local --with-extralibs="-lmp3lame" --with-cgidir=/var/www/cgi-bin
Код: Выделить всё
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... ./install-sh -c -d
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
configure: WARNING: You can call configure with the --with-webuser option.
This tells configure what the user name of the web user is if it is not the default of 'apache'.
e.g. --with-webuser=apache or --with-webuser=web
configure: WARNING: You can call configure with the --with-webgroup option.
This tells configure what the group name of the web group is if it is not the default of 'apache'.
e.g. --with-webgroup=apache or --with-webgroup=web
configure: WARNING: You can call configure with the --with-webhost option.
This tells configure what the host name is for name based virtual hosting. This is only used to populate the sample web/zmHttpd.conf file.
e.g. --with-webhost=zm.localdomain
configure: WARNING: You can call configure with the --enable-debug=<yes|no> or --disable-debug option.
This tells configure whether to compile ZoneMinder with debug included. Although debug is included
by default it is not output unless explicitly switched on elsewhere. These checks may induce a
small penalty on performance and if you are after squeezing the maximum possible performance out
of ZoneMinder you may use this switch to prevent debug from being compiled in.
e.g. --enable-debug=yes or --disable-debug
configure: WARNING: You can call configure with the --enable-crashtrace=<yes|no> or --disable-crashtrace option.
This tells configure whether to compile ZoneMinder with crash tracing included. This allows a
dump of the stack trace when a ZoneMinder binary crashes or is killed by an unexpected signal.
Although this should work on most systems it does rely on un(or loosely) documented features and
so should be regarded as experimental. If you experience problems compiling zm_signal.cpp or
ZoneMinder binaries fail to shut down correctly then you should probably disable this feature.
e.g. --enable-crashtrace=yes or --disable-crashtrace
configure: WARNING: You can call configure with the --enable-mmap=<yes|no> or --disable-mmap option.
This tells configure whether to compile ZoneMinder with mmap support rather than IPC shared
memory. This is a feature that uses memory mapped into files which all processes can share.
Memory mapping requires less configuration and is more flexible than shared memory but may
slow down your system unless the mapped files are configured to reside on a fast or RAM based
filesystem which will normally be the case by default.
e.g. --enable-mmap=yes or --disable-mmap
checking for g++... g++
checking whether the C++ compiler works... no
configure: error: in `/usr/ports/multimedia/zoneminder':
configure: error: C++ compiler cannot create executables
See `config.log' for more details.
Код: Выделить всё
<?php
if ( !canView( 'Events' ) )
{
$view = "error";
return;
}
$eid = validInt( $_REQUEST['eid'] );
$fid = !empty($_REQUEST['fid'])?validInt($_REQUEST['fid']):1;
if ( $user['MonitorIds'] )
$midSql = " and MonitorId in (".join( ",", preg_split( '/["\'\s]*,["\'\s]*/', dbEscape($user['MonitorIds']) ) ).")";
else
$midSql = '';
$sql = "select E.*,M.Name as MonitorName,M.Width,M.Height,M.DefaultRate,M.DefaultScale from Events as E inner join Monitors as M on E.MonitorId = M.Id where E.Id = '".dbEscape($eid)."'".$midSql;
$event = dbFetchOne( $sql );
if ( isset( $_REQUEST['rate'] ) )
$rate = validInt($_REQUEST['rate']);
else
$rate = reScale( RATE_BASE, $event['DefaultRate'], ZM_WEB_DEFAULT_RATE );
if ( isset( $_REQUEST['scale'] ) )
$scale = validInt($_REQUEST['scale']);
else
$scale = reScale( SCALE_BASE, $event['DefaultScale'], ZM_WEB_DEFAULT_SCALE );
$replayModes = array(
'single' => $SLANG['ReplaySingle'],
'all' => $SLANG['ReplayAll'],
'gapless' => $SLANG['ReplayGapless'],
);
if ( isset( $_REQUEST['streamMode'] ) )
$streamMode = validHtmlStr($_REQUEST['streamMode']);
else
$streamMode = canStream()?'stream':'stills';
if ( isset( $_REQUEST['replayMode'] ) )
$replayMode = validHtmlStr($_REQUEST['replayMode']);
if ( isset( $_COOKIE['replayMode']) && preg_match('#^[a-z]+$#', $_COOKIE['replayMode']) )
$replayMode = validHtmlStr($_COOKIE['replayMode']);
else
$replayMode = array_shift( array_keys( $replayModes ) );
parseSort();
parseFilter( $_REQUEST['filter'] );
$filterQuery = $_REQUEST['filter']['query'];
$panelSections = 40;
$panelSectionWidth = (int)ceil(reScale($event['Width'],$scale)/$panelSections);
$panelWidth = ($panelSections*$panelSectionWidth-1);
$connkey = generateConnKey();
$focusWindow = true;
xhtmlHeaders(__FILE__, $SLANG['Event'] );
?>
<body>
<div id="page">
<div id="content">
<div id="dataBar">
<table id="dataTable" class="major" cellspacing="0">
<tr>
<td><span id="dataId" title="<?= $SLANG['Id'] ?>"><?= $event['Id'] ?></span></td>
<td><span id="dataCause" title="<?= $event['Notes']?validHtmlStr($event['Notes']):$SLANG['AttrCause'] ?>"><?= validHtmlStr($event['Cause']) ?></span></td>
<td><span id="dataTime" title="<?= $SLANG['Time'] ?>"><?= strftime( STRF_FMT_DATETIME_SHORT, strtotime($event['StartTime'] ) ) ?></span></td>
<td><span id="dataDuration" title="<?= $SLANG['Duration'] ?>"><?= $event['Length'] ?></span>s</td>
<td><span id="dataFrames" title="<?= $SLANG['AttrFrames']."/".$SLANG['AttrAlarmFrames'] ?>"><?= $event['Frames'] ?>/<?= $event['AlarmFrames'] ?></span></td>
<td><span id="dataScore" title="<?= $SLANG['AttrTotalScore']."/".$SLANG['AttrAvgScore']."/".$SLANG['AttrMaxScore'] ?>"><?= $event['TotScore'] ?>/<?= $event['AvgScore'] ?>/<?= $event['MaxScore'] ?></span></td>
</tr>
</table>
</div>
<div id="menuBar1">
<div id="scaleControl"><label for="scale"><?= $SLANG['Scale'] ?></label><?= buildSelect( "scale", $scales, "changeScale();" ); ?></div>
<div id="replayControl"><label for="replayMode"><?= $SLANG['Replay'] ?></label><?= buildSelect( "replayMode", $replayModes, "changeReplayMode();" ); ?></div>
<div id="nameControl"><input type="text" id="eventName" name="eventName" value="<?= validHtmlStr($event['Name']) ?>" size="16"/><input type="button" value="<?= $SLANG['Rename'] ?>" onclick="renameEvent()"<?php if ( !canEdit( 'Events' ) ) { ?> disabled="disabled"<?php } ?>/></div>
</div>
<div id="menuBar2">
<div id="closeWindow"><a href="#" onclick="closeWindow();"><?= $SLANG['Close'] ?></a></div>
<?php
if ( canEdit( 'Events' ) )
{
?>
<div id="deleteEvent"><a href="#" onclick="deleteEvent()"><?= $SLANG['Delete'] ?></a></div>
<div id="editEvent"><a href="#" onclick="editEvent()"><?= $SLANG['Edit'] ?></a></div>
<?php
}
if ( canView( 'Events' ) )
{
?>
<div id="exportEvent"><a href="#" onclick="exportEvent()"><?= $SLANG['Export'] ?></a></div>
<?php
}
if ( canEdit( 'Events' ) )
{
?>
<div id="archiveEvent" class="hidden"><a href="#" onclick="archiveEvent()"><?= $SLANG['Archive'] ?></a></div>
<div id="unarchiveEvent" class="hidden"><a href="#" onclick="unarchiveEvent()"><?= $SLANG['Unarchive'] ?></a></div>
<?php
}
?>
<div id="framesEvent"><a href="#" onclick="showEventFrames()"><?= $SLANG['Frames'] ?></a></div>
<div id="streamEvent"<?php if ( $streamMode == 'stream' ) { ?> class="hidden"<?php } ?>><a href="#" onclick="showStream()"><?= $SLANG['Stream'] ?></a></div>
<div id="stillsEvent"<?php if ( $streamMode == 'still' ) { ?> class="hidden"<?php } ?>><a href="#" onclick="showStills()"><?= $SLANG['Stills'] ?></a></div>
<?php
if ( ZM_OPT_FFMPEG )
{
?>
<div id="videoEvent"><a href="#" onclick="videoEvent()"><?= $SLANG['Video'] ?></a></div>
<?php
}
?>
</div>
<div id="eventStream">
<div id="imageFeed">
<?php
if ( ZM_WEB_STREAM_METHOD == 'mpeg' && ZM_MPEG_LIVE_FORMAT )
{
$streamSrc = getStreamSrc( array( "source=event", "mode=mpeg", "event=".$eid, "frame=".$fid, "scale=".$scale, "rate=".$rate, "bitrate=".ZM_WEB_VIDEO_BITRATE, "maxfps=".ZM_WEB_VIDEO_MAXFPS, "format=".ZM_MPEG_REPLAY_FORMAT, "replay=".$replayMode ) );
outputVideoStream( "evtStream", $streamSrc, reScale( $event['Width'], $scale ), reScale( $event['Height'], $scale ), ZM_MPEG_LIVE_FORMAT );
}
else
{
$streamSrc = getStreamSrc( array( "source=event", "mode=jpeg", "event=".$eid, "frame=".$fid, "scale=".$scale, "rate=".$rate, "maxfps=".ZM_WEB_VIDEO_MAXFPS, "replay=".$replayMode) );
if ( canStreamNative() )
{
outputImageStream( "evtStream", $streamSrc, reScale( $event['Width'], $scale ), reScale( $event['Height'], $scale ), validHtmlStr($event['Name']) );
}
else
{
outputHelperStream( "evtStream", $streamSrc, reScale( $event['Width'], $scale ), reScale( $event['Height'], $scale ) );
}
}
?>
</div>
<p id="dvrControls">
<input type="button" value="<+" id="prevBtn" title="<?= $SLANG['Prev'] ?>" class="inactive" onclick="streamPrev( true )"/>
<input type="button" value="<<" id="fastRevBtn" title="<?= $SLANG['Rewind'] ?>" class="inactive" disabled="disabled" onclick="streamFastRev( true )"/>
<input type="button" value="<" id="slowRevBtn" title="<?= $SLANG['StepBack'] ?>" class="unavail" disabled="disabled" onclick="streamSlowRev( true )"/>
<input type="button" value="||" id="pauseBtn" title="<?= $SLANG['Pause'] ?>" class="inactive" onclick="streamPause( true )"/>
<input type="button" value="|>" id="playBtn" title="<?= $SLANG['Play'] ?>" class="active" disabled="disabled" onclick="streamPlay( true )"/>
<input type="button" value=">" id="slowFwdBtn" title="<?= $SLANG['StepForward'] ?>" class="unavail" disabled="disabled" onclick="streamSlowFwd( true )"/>
<input type="button" value=">>" id="fastFwdBtn" title="<?= $SLANG['FastForward'] ?>" class="inactive" disabled="disabled" onclick="streamFastFwd( true )"/>
<input type="button" value="–" id="zoomOutBtn" title="<?= $SLANG['ZoomOut'] ?>" class="avail" onclick="streamZoomOut()"/>
<input type="button" value="+>" id="nextBtn" title="<?= $SLANG['Next'] ?>" class="inactive" onclick="streamNext( true )"/>
</p>
<div id="replayStatus">
<span id="mode">Mode: <span id="modeValue"> </span></span>
<span id="rate">Rate: <span id="rateValue"></span>x</span>
<span id="progress">Progress: <span id="progressValue"></span>s</span>
<span id="zoom">Zoom: <span id="zoomValue"></span>x</span>
</div>
<div id="progressBar" class="invisible">
<?php
for ( $i = 0; $i < $panelSections; $i++ )
{
?>
<div class="progressBox" id="progressBox<?= $i ?>" title=""></div>
<?php
}
?>
</div>
</div>
<div id="eventStills" class="hidden">
<div id="eventThumbsPanel">
<div id="eventThumbs">
</div>
</div>
<div id="eventImagePanel" class="hidden">
<div id="eventImageFrame">
<img id="eventImage" src="graphics/transparent.gif" alt=""/>
<div id="eventImageBar">
<div id="eventImageClose"><input type="button" value="<?= $SLANG['Close'] ?>" onclick="hideEventImage()"/></div>
<div id="eventImageStats" class="hidden"><input type="button" value="<?= $SLANG['Stats'] ?>" onclick="showFrameStats()"/></div>
<div id="eventImageData">Frame <span id="eventImageNo"></span></div>
</div>
</div>
</div>
<div id="eventImageNav">
<div id="eventImageButtons">
<div id="prevButtonsPanel">
<input id="prevEventBtn" type="button" value="<E" onclick="prevEvent()" disabled="disabled"/>
<input id="prevThumbsBtn" type="button" value="<<" onclick="prevThumbs()" disabled="disabled"/>
<input id="prevImageBtn" type="button" value="<" onclick="prevImage()" disabled="disabled"/>
<input id="nextImageBtn" type="button" value=">" onclick="nextImage()" disabled="disabled"/>
<input id="nextThumbsBtn" type="button" value=">>" onclick="nextThumbs()" disabled="disabled"/>
<input id="nextEventBtn" type="button" value="E>" onclick="nextEvent()" disabled="disabled"/>
</div>
</div>
<div id="thumbsSliderPanel">
<div id="thumbsSlider">
<div id="thumbsKnob">
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</body>
</html>
Код: Выделить всё
root@aero:/usr/home/dmx # pkg_info | grep php
php5-5.4.16 PHP Scripting Language
php5-ctype-5.4.16 The ctype shared extension for php
php5-dom-5.4.16 The dom shared extension for php
php5-extensions-1.7 A "meta-port" to install PHP extensions
php5-filter-5.4.16 The filter shared extension for php
php5-hash-5.4.16 The hash shared extension for php
php5-iconv-5.4.16 The iconv shared extension for php
php5-json-5.4.16 The json shared extension for php
php5-mcrypt-5.4.16 The mcrypt shared extension for php
php5-mysql-5.4.16 The mysql shared extension for php
php5-pdo-5.4.16 The pdo shared extension for php
php5-pdo_mysql-5.4.16 The pdo_mysql shared extension for php
php5-pdo_sqlite-5.4.16 The pdo_sqlite shared extension for php
php5-phar-5.4.16 The phar shared extension for php
php5-posix-5.4.16 The posix shared extension for php
php5-session-5.4.16 The session shared extension for php
php5-simplexml-5.4.16 The simplexml shared extension for php
php5-snmp-5.4.16 The snmp shared extension for php
php5-sqlite3-5.4.16 The sqlite3 shared extension for php
php5-tokenizer-5.4.16 The tokenizer shared extension for php
php5-xml-5.4.16 The xml shared extension for php
php5-xmlreader-5.4.16 The xmlreader shared extension for php
php5-xmlwriter-5.4.16 The xmlwriter shared extension for php
php5-zip-5.4.16 The zip shared extension for php
Код: Выделить всё
root@aero:/usr/home/dmx # uname -a
FreeBSD aero.cv.ua 9.1-RELEASE FreeBSD 9.1-RELEASE #0 r243826: Tue Dec 4 06:55:39 UTC 2012 root@obrian.cse.buffalo.edu:/usr/obj/usr/src/sys/GENERIC i386
Код: Выделить всё
webcamd_enable="yes"
webcamd_flags="-d ugen1.2 -i 0 -v 0"
webcamd_flags="-d ugen1.4 -i 0 -v 1"
Код: Выделить всё
/usr/local/etc/rc.d/zoneminder start
Starting zoneminder.
Warning, overriding installed ./zm.conf file with local copy
DBD::mysql::st execute failed: Data too long for column 'DefaultValue' at row 1 at /usr/local/lib/perl5/site_perl/5.14.2/ZoneMinder/ConfigAdmin.pm line 149.
Can't execute: Data too long for column 'DefaultValue' at row 1 at /usr/local/bin/zmupdate.pl line 331
/usr/local/etc/rc.d/zoneminder: WARNING: failed to start zoneminder
Код: Выделить всё
ERROR 1366 (HY000): Incorrect integer value: '' for column 'Id' at row 1
ERROR 1366 (HY000): Incorrect integer value: '' for column 'Id' at row 1
ERROR 1366 (HY000): Incorrect integer value: '' for column 'Id' at row 1
ERROR 1366 (HY000): Incorrect integer value: '' for column 'Id' at row 1
ERROR 1366 (HY000): Incorrect integer value: '' for column 'Id' at row 1
ERROR 1366 (HY000): Incorrect integer value: '' for column 'Id' at row 1
ERROR 1366 (HY000): Incorrect integer value: '' for column 'Id' at row 1
ERROR 1366 (HY000): Incorrect integer value: '' for column 'Id' at row 1
ERROR 1366 (HY000): Incorrect integer value: '' for column 'Id' at row 1
ERROR 1366 (HY000): Incorrect integer value: '' for column 'Id' at row 1
ERROR 1366 (HY000): Incorrect integer value: '' for column 'Id' at row 1
ERROR 1366 (HY000): Incorrect integer value: '' for column 'Id' at row 1
ERROR 1366 (HY000): Incorrect integer value: '' for column 'Id' at row 1
ERROR 1366 (HY000): Incorrect integer value: '' for column 'Id' at row 1
ERROR 1366 (HY000): Incorrect integer value: '' for column 'Id' at row 1
ERROR 1366 (HY000): Incorrect integer value: '' for column 'Id' at row 1
ERROR 1366 (HY000): Incorrect integer value: '' for column 'Id' at row 1
ERROR 1366 (HY000): Incorrect integer value: '' for column 'Id' at row 1
ERROR 1366 (HY000): Incorrect integer value: '' for column 'Id' at row 1
.........
ERROR 1406 (22001): Data too long for column 'DefaultValue' at row 1
Query OK, 1 row affected (0.01 sec)
ERROR 1406 (22001): Data too long for column 'DefaultValue' at row 1
Query OK, 1 row affected (0.01 sec)
.......
Код: Выделить всё
zm_logger.cpp:526:15: error: use of undeclared identifier 'getpid'
tid = getpid(); // Process id
Код: Выделить всё
ZoneMinder-1.27.0/src/zm_comms.h:427:20: error: assigning to
'SockAddr *' from incompatible type 'SockAddrInet *'
Пробуй вариант:andr35 писал(а):Не получается подключить к zoneminder в качестве удаленной камеры китайский внешний видеорегистратор EDR-204H на 4 видеокамеры компании CCDCAM Security systems (они же Shenzhen CCDCAM Technology Co.,Ltd, http://www.ccdcam.cn).
Используемый Протокол - H.264.
Порты видеорегистратора:
- command port 3357
- data port 3358
- talk port 3360
- http port 80
IP регистратора - 192.168.1.110
Перепробовал такие варианты настроек в zoneminder:
- remote host name: 192.168.1.110, admin:88888888@
192.168.1.110
- remote host port: 80, 3357, 3358, 3360
- remote host path - пустой, т.к. других данных не нашел
Zoneminder пишет "Unable to probe local cameras, status is '255'".
К видеорегистратору идет софт Remote Surveillance DVR Client некоего прозводителя NetVideo, данных о котором в сети нет кроме ссылки http://remote-surveillance-dvr-client.s ... ormer.com/.
После установки также запускается WEB-клиент с 192.168.1.110, но только в windows (т.е. вероятно это не клиент в самом видеорегистраторе).
Софт работает, для входа спрашивает учетную запись (admin:88888888).
Насколько я понимаю, доступ идет по http, а не по rtp (указал в настройках zoneminder).
Также вместо формата jpeg указал mpeg в zoneminder.
Пробовал настроить другой софт видеонаблюдения под windows xp - тоже не смог.
От всех ответов на вопросы о настройках производитель таллантливо уходит.
Краткое описание регистратора - http://www.diytrade.com/china/4/product ... e_DVR.html
Пожалуйста, подскажите:
1. Что указать в remote host name, remote host port, remote host path?
2. Как узнать remote host path?
3. Есть ли утилита для перебора вариантов настроек IP-камеры
Также буду признателен за пример настройки любого видеорегистратора с учетом 4х видеокамер (вероятно, где-то должна указываться соответствующая видеокамера).
Заранее признателен,
Андрей
Скорее всего не заведётся. Нужен 1.27.0, ибо столкнулся с теми же граблями.Sergey Enin писал(а):andr35 писал(а):Не получается подключить к zoneminder в качестве удаленной камеры китайский внешний видеорегистратор EDR-204H на 4 видеокамеры компании CCDCAM Security systems (они же Shenzhen CCDCAM Technology Co.,Ltd, http://www.ccdcam.cn).
Код: Выделить всё
rtps://IP:554/user=USER&password=PASS&channel=CHAN&stream=STREAM?PROTO