2014-05-29 23:47:52 +08:00
|
|
|
<?php
|
|
|
|
//
|
|
|
|
// ZoneMinder web event view file, $Date$, $Revision$
|
|
|
|
// Copyright (C) 2001-2008 Philip Coombes
|
|
|
|
//
|
|
|
|
// This program is free software; you can redistribute it and/or
|
|
|
|
// modify it under the terms of the GNU General Public License
|
|
|
|
// as published by the Free Software Foundation; either version 2
|
|
|
|
// of the License, or (at your option) any later version.
|
|
|
|
//
|
|
|
|
// This program is distributed in the hope that it will be useful,
|
|
|
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
2008-07-14 21:54:50 +08:00
|
|
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
2014-05-29 23:47:52 +08:00
|
|
|
// GNU General Public License for more details.
|
|
|
|
//
|
|
|
|
// You should have received a copy of the GNU General Public License
|
|
|
|
// along with this program; if not, write to the Free Software
|
2016-12-26 23:23:16 +08:00
|
|
|
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
2014-05-29 23:47:52 +08:00
|
|
|
//
|
|
|
|
|
2018-01-18 04:20:15 +08:00
|
|
|
if ( !canView('Events') ) {
|
2017-05-19 02:55:53 +08:00
|
|
|
$view = 'error';
|
|
|
|
return;
|
2014-05-29 23:47:52 +08:00
|
|
|
}
|
|
|
|
|
2020-08-18 05:41:38 +08:00
|
|
|
require_once('includes/Event.php');
|
|
|
|
require_once('includes/Filter.php');
|
|
|
|
|
2019-03-20 00:16:31 +08:00
|
|
|
$eid = validInt($_REQUEST['eid']);
|
2020-04-17 21:46:10 +08:00
|
|
|
$fid = !empty($_REQUEST['fid']) ? validInt($_REQUEST['fid']) : 1;
|
2014-05-29 23:47:52 +08:00
|
|
|
|
2019-03-20 00:16:31 +08:00
|
|
|
$Event = new ZM\Event($eid);
|
2015-02-24 03:10:18 +08:00
|
|
|
if ( $user['MonitorIds'] ) {
|
2019-03-20 00:16:31 +08:00
|
|
|
$monitor_ids = explode(',', $user['MonitorIds']);
|
|
|
|
if ( count($monitor_ids) and ! in_array($Event->MonitorId(), $monitor_ids) ) {
|
2016-10-12 21:17:57 +08:00
|
|
|
$view = 'error';
|
|
|
|
return;
|
|
|
|
}
|
2015-02-24 03:10:18 +08:00
|
|
|
}
|
2017-05-20 00:24:59 +08:00
|
|
|
$Monitor = $Event->Monitor();
|
2008-07-14 21:54:50 +08:00
|
|
|
|
2019-02-25 23:21:43 +08:00
|
|
|
if ( isset($_REQUEST['rate']) ) {
|
2017-05-19 02:55:53 +08:00
|
|
|
$rate = validInt($_REQUEST['rate']);
|
2018-11-29 22:43:21 +08:00
|
|
|
} else if ( isset($_COOKIE['zmEventRate']) ) {
|
|
|
|
$rate = $_COOKIE['zmEventRate'];
|
2017-10-22 08:22:05 +08:00
|
|
|
} else {
|
|
|
|
$rate = reScale(RATE_BASE, $Monitor->DefaultRate(), ZM_WEB_DEFAULT_RATE);
|
|
|
|
}
|
2016-09-27 21:46:04 +08:00
|
|
|
|
2019-02-25 23:21:43 +08:00
|
|
|
if ( isset($_REQUEST['scale']) ) {
|
2016-09-27 21:46:04 +08:00
|
|
|
$scale = validInt($_REQUEST['scale']);
|
2019-03-20 00:16:31 +08:00
|
|
|
} else if ( isset($_COOKIE['zmEventScale'.$Event->MonitorId()]) ) {
|
2016-10-12 21:17:57 +08:00
|
|
|
$scale = $_COOKIE['zmEventScale'.$Event->MonitorId()];
|
2016-09-27 21:46:04 +08:00
|
|
|
} else {
|
2020-10-08 21:06:56 +08:00
|
|
|
$scale = $Monitor->DefaultScale();
|
2016-09-27 21:46:04 +08:00
|
|
|
}
|
2014-05-29 23:47:52 +08:00
|
|
|
|
2018-09-11 00:22:55 +08:00
|
|
|
$codec = 'auto';
|
2019-02-25 23:21:43 +08:00
|
|
|
if ( isset($_REQUEST['codec']) ) {
|
2018-09-11 00:22:55 +08:00
|
|
|
$codec = $_REQUEST['codec'];
|
2020-08-25 23:27:25 +08:00
|
|
|
zm_session_start();
|
2018-09-11 03:09:08 +08:00
|
|
|
$_SESSION['zmEventCodec'.$Event->MonitorId()] = $codec;
|
|
|
|
session_write_close();
|
2019-02-25 23:21:43 +08:00
|
|
|
} else if ( isset($_SESSION['zmEventCodec'.$Event->MonitorId()]) ) {
|
2018-09-11 00:22:55 +08:00
|
|
|
$codec = $_SESSION['zmEventCodec'.$Event->MonitorId()];
|
|
|
|
} else {
|
|
|
|
$codec = $Monitor->DefaultCodec();
|
|
|
|
}
|
|
|
|
$codecs = array(
|
|
|
|
'auto' => translate('Auto'),
|
2019-03-20 00:16:31 +08:00
|
|
|
'MP4' => translate('MP4'),
|
2018-09-11 00:22:55 +08:00
|
|
|
'MJPEG' => translate('MJPEG'),
|
|
|
|
);
|
|
|
|
|
2014-05-29 23:47:52 +08:00
|
|
|
$replayModes = array(
|
2019-03-20 00:16:31 +08:00
|
|
|
'none' => translate('None'),
|
|
|
|
'single' => translate('ReplaySingle'),
|
|
|
|
'all' => translate('ReplayAll'),
|
|
|
|
'gapless' => translate('ReplayGapless'),
|
2014-05-29 23:47:52 +08:00
|
|
|
);
|
|
|
|
|
2020-04-17 21:46:10 +08:00
|
|
|
if ( isset($_REQUEST['streamMode']) )
|
2017-05-19 02:55:53 +08:00
|
|
|
$streamMode = validHtmlStr($_REQUEST['streamMode']);
|
2014-05-29 23:47:52 +08:00
|
|
|
else
|
2017-05-19 02:55:53 +08:00
|
|
|
$streamMode = 'video';
|
2014-05-29 23:47:52 +08:00
|
|
|
|
2017-07-07 05:45:23 +08:00
|
|
|
$replayMode = '';
|
2020-02-26 00:17:46 +08:00
|
|
|
if ( isset($_REQUEST['replayMode']) )
|
2017-05-19 02:55:53 +08:00
|
|
|
$replayMode = validHtmlStr($_REQUEST['replayMode']);
|
2020-02-26 00:17:46 +08:00
|
|
|
if ( isset($_COOKIE['replayMode']) && preg_match('#^[a-z]+$#', $_COOKIE['replayMode']) )
|
2017-05-19 02:55:53 +08:00
|
|
|
$replayMode = validHtmlStr($_COOKIE['replayMode']);
|
2017-06-22 05:14:02 +08:00
|
|
|
|
2019-02-25 23:21:43 +08:00
|
|
|
if ( ( !$replayMode ) or ( !$replayModes[$replayMode] ) ) {
|
2017-06-22 05:14:02 +08:00
|
|
|
$replayMode = 'none';
|
2014-05-29 23:47:52 +08:00
|
|
|
}
|
|
|
|
|
2017-11-14 14:59:15 +08:00
|
|
|
$video_tag = false;
|
2020-12-16 04:59:02 +08:00
|
|
|
if ( $Event->DefaultVideo() and ( $codec == 'MP4' or $codec == 'auto' ) ) {
|
2017-11-14 14:59:15 +08:00
|
|
|
$video_tag = true;
|
|
|
|
}
|
2015-04-14 00:41:21 +08:00
|
|
|
// videojs zoomrotate only when direct recording
|
|
|
|
$Zoom = 1;
|
|
|
|
$Rotation = 0;
|
2016-10-12 21:17:57 +08:00
|
|
|
if ( $Monitor->VideoWriter() == '2' ) {
|
2017-05-19 23:00:37 +08:00
|
|
|
# Passthrough
|
|
|
|
$Rotation = $Event->Orientation();
|
|
|
|
if ( in_array($Event->Orientation(),array('90','270')) )
|
|
|
|
$Zoom = $Event->Height()/$Event->Width();
|
2015-04-14 00:41:21 +08:00
|
|
|
}
|
|
|
|
|
2020-04-17 21:46:10 +08:00
|
|
|
// These are here to figure out the next/prev event, however if there is no filter, then default to one that specifies the Monitor
|
2020-01-08 03:49:58 +08:00
|
|
|
if ( !isset($_REQUEST['filter']) ) {
|
2020-04-17 21:46:10 +08:00
|
|
|
$_REQUEST['filter'] = array(
|
|
|
|
'Query'=>array(
|
|
|
|
'terms'=>array(
|
|
|
|
array('attr'=>'MonitorId', 'op'=>'=', 'val'=>$Event->MonitorId())
|
|
|
|
)
|
|
|
|
)
|
|
|
|
);
|
2020-01-08 03:49:58 +08:00
|
|
|
}
|
2014-05-29 23:47:52 +08:00
|
|
|
parseSort();
|
2020-08-18 05:41:38 +08:00
|
|
|
$filter = ZM\Filter::parse($_REQUEST['filter']);
|
|
|
|
$filterQuery = $filter->querystring();
|
2014-05-29 23:47:52 +08:00
|
|
|
|
|
|
|
$connkey = generateConnKey();
|
|
|
|
|
2020-12-01 23:07:42 +08:00
|
|
|
xhtmlHeaders(__FILE__, translate('Event').' '.$Event->Id());
|
2014-05-29 23:47:52 +08:00
|
|
|
?>
|
|
|
|
<body>
|
2008-07-14 21:54:50 +08:00
|
|
|
<div id="page">
|
2020-12-01 23:07:42 +08:00
|
|
|
<?php echo getNavBarHTML() ?>
|
2016-10-13 03:39:32 +08:00
|
|
|
<?php
|
2020-02-26 00:17:46 +08:00
|
|
|
if ( !$Event->Id() ) {
|
2021-01-26 07:48:20 +08:00
|
|
|
echo '<div class="error">Event was not found.</div>';
|
|
|
|
}
|
|
|
|
|
|
|
|
if ( $Event->Id() and !file_exists($Event->Path()) )
|
|
|
|
echo '<div class="error">Event was not found at '.$Event->Path().'. It is unlikely that playback will be possible.</div>';
|
2016-10-13 03:39:32 +08:00
|
|
|
?>
|
2020-12-01 23:07:42 +08:00
|
|
|
|
|
|
|
<!-- BEGIN HEADER -->
|
|
|
|
<div class="d-flex flex-row justify-content-between px-3 py-1">
|
|
|
|
<div id="toolbar" >
|
|
|
|
<button id="backBtn" class="btn btn-normal" data-toggle="tooltip" data-placement="top" title="<?php echo translate('Back') ?>" disabled><i class="fa fa-arrow-left"></i></button>
|
|
|
|
<button id="refreshBtn" class="btn btn-normal" data-toggle="tooltip" data-placement="top" title="<?php echo translate('Refresh') ?>" ><i class="fa fa-refresh"></i></button>
|
2021-01-26 07:48:20 +08:00
|
|
|
<?php if ( $Event->Id() ) { ?>
|
2020-12-01 23:07:42 +08:00
|
|
|
<button id="renameBtn" class="btn btn-normal" data-toggle="tooltip" data-placement="top" title="<?php echo translate('Rename') ?>" disabled><i class="fa fa-font"></i></button>
|
|
|
|
<button id="archiveBtn" class="btn btn-normal" data-toggle="tooltip" data-placement="top" title="<?php echo translate('Archive') ?>" disabled><i class="fa fa-archive"></i></button>
|
|
|
|
<button id="unarchiveBtn" class="btn btn-normal" data-toggle="tooltip" data-placement="top" title="<?php echo translate('Unarchive') ?>" disabled><i class="fa fa-file-archive-o"></i></button>
|
|
|
|
<button id="editBtn" class="btn btn-normal" data-toggle="tooltip" data-placement="top" title="<?php echo translate('Edit') ?>" disabled><i class="fa fa-pencil"></i></button>
|
|
|
|
<button id="exportBtn" class="btn btn-normal" data-toggle="tooltip" data-placement="top" title="<?php echo translate('Export') ?>"><i class="fa fa-external-link"></i></button>
|
2021-09-22 00:59:42 +08:00
|
|
|
<a id="downloadBtn" class="btn btn-normal" href="<?php echo $Event->getStreamSrc(array('mode'=>'mp4'),'&')?>"
|
2021-11-13 04:11:41 +08:00
|
|
|
title="<?php echo translate('Download'). ' ' . $Event->DefaultVideo() ?>"
|
2021-09-22 00:59:42 +08:00
|
|
|
download
|
|
|
|
<?php echo $Event->DefaultVideo() ? '' : 'style="display:none;"' ?>
|
|
|
|
><i class="fa fa-download"></i></a>
|
2021-10-28 22:46:07 +08:00
|
|
|
<button id="videoBtn" class="btn btn-normal" data-toggle="tooltip" data-toggle="tooltip" data-placement="top" title="<?php echo translate('GenerateVideo') ?>"><i class="fa fa-file-video-o"></i></button>
|
2020-12-16 04:59:02 +08:00
|
|
|
<button id="statsBtn" class="btn btn-normal" data-toggle="tooltip" data-placement="top" title="<?php echo translate('Stats') ?>" ><i class="fa fa-info"></i></button>
|
2020-12-25 04:46:13 +08:00
|
|
|
<button id="framesBtn" class="btn btn-normal" data-toggle="tooltip" data-placement="top" title="<?php echo translate('Frames') ?>" ><i class="fa fa-picture-o"></i></button>
|
2020-12-16 04:59:02 +08:00
|
|
|
<button id="deleteBtn" class="btn btn-danger" data-toggle="tooltip" data-placement="top" title="<?php echo translate('Delete') ?>"><i class="fa fa-trash"></i></button>
|
2021-01-26 07:48:20 +08:00
|
|
|
<?php } // end if Event->Id ?>
|
2020-12-16 04:59:02 +08:00
|
|
|
</div>
|
|
|
|
|
|
|
|
<h2><?php echo translate('Event').' '.$Event->Id() ?></h2>
|
|
|
|
|
|
|
|
<div class="d-flex flex-row">
|
2019-10-16 03:04:14 +08:00
|
|
|
<div id="replayControl">
|
|
|
|
<label for="replayMode"><?php echo translate('Replay') ?></label>
|
2020-09-06 05:33:17 +08:00
|
|
|
<?php echo htmlSelect('replayMode', $replayModes, $replayMode, array('data-on-change'=>'changeReplayMode','id'=>'replayMode')); ?>
|
2019-10-16 03:04:14 +08:00
|
|
|
</div>
|
|
|
|
<div id="scaleControl">
|
|
|
|
<label for="scale"><?php echo translate('Scale') ?></label>
|
2020-09-06 05:33:17 +08:00
|
|
|
<?php echo htmlSelect('scale', $scales, $scale, array('data-on-change'=>'changeScale','id'=>'scale')); ?>
|
2019-10-16 03:04:14 +08:00
|
|
|
</div>
|
|
|
|
<div id="codecControl">
|
|
|
|
<label for="codec"><?php echo translate('Codec') ?></label>
|
2020-09-06 05:33:17 +08:00
|
|
|
<?php echo htmlSelect('codec', $codecs, $codec, array('data-on-change'=>'changeCodec','id'=>'codec')); ?>
|
2019-10-16 03:04:14 +08:00
|
|
|
</div>
|
2016-04-30 20:27:10 +08:00
|
|
|
</div>
|
2019-10-16 03:04:14 +08:00
|
|
|
</div>
|
2021-01-26 07:48:20 +08:00
|
|
|
<?php if ( $Event->Id() ) { ?>
|
2020-12-01 23:07:42 +08:00
|
|
|
<!-- BEGIN VIDEO CONTENT ROW -->
|
|
|
|
<div id="content" class="d-flex flex-row justify-content-center">
|
|
|
|
<div class="">
|
|
|
|
<!-- VIDEO STATISTICS TABLE -->
|
|
|
|
<table id="eventStatsTable" class="table-sm table-borderless">
|
2020-12-14 20:55:45 +08:00
|
|
|
<!-- EVENT STATISTICS POPULATED BY JAVASCRIPT -->
|
2020-12-01 23:07:42 +08:00
|
|
|
</table>
|
|
|
|
</div>
|
|
|
|
<div class="">
|
2019-10-16 03:04:14 +08:00
|
|
|
<div id="eventVideo">
|
2020-12-01 23:07:42 +08:00
|
|
|
<!-- VIDEO CONTENT -->
|
2008-07-14 21:54:50 +08:00
|
|
|
<?php
|
2017-11-14 14:59:15 +08:00
|
|
|
if ( $video_tag ) {
|
2014-05-12 06:08:23 +08:00
|
|
|
?>
|
2022-03-09 15:57:12 +08:00
|
|
|
<div id="videoFeed" style="width: 1280px;height: 720px">
|
|
|
|
<div id="player-container">
|
|
|
|
<div id="glplayer" class="glplayer" src="<?php echo $Event->getStreamSrc(array('mode'=>'mpeg','format'=>'h264'),'&'); ?>"></div>
|
|
|
|
<div id="controller" class="controller">
|
|
|
|
<div id="progress-contaniner" class="progress-common progress-contaniner">
|
|
|
|
<div id="cachePts" class="progress-common cachePts"></div>
|
|
|
|
<div id="progressPts" class="progress-common progressPts"></div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<div id="operate-container" class="operate-container">
|
|
|
|
<li id="playBar" class="playBtn">
|
|
|
|
<a href="javascript:void(0)" title="start">Start</a>
|
|
|
|
</li>
|
|
|
|
|
|
|
|
<span id="ptsLabel" class="ptsLabel">00:00:00/00:00:00</span>
|
|
|
|
<div class="voice-div">
|
|
|
|
<span>
|
|
|
|
<a id="muteBtn"
|
|
|
|
class="muteBtn" href="javascript:void(0)">
|
|
|
|
<svg class="icon" style="width: 1em;height: 1em;vertical-align: middle;fill: currentColor;overflow: hidden;" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="488">
|
|
|
|
<path d="M153.6 665.6V358.4h204.8V256H153.6c-56.32 0-102.4 46.08-102.4 102.4v307.2c0 56.32 46.08 102.4 102.4 102.4h204.8v-102.4H153.6zM358.4 256v102.4l204.8-128v563.2L358.4 665.6v102.4l307.2 204.8V51.2zM768 261.12v107.52c61.44 20.48 102.4 76.8 102.4 143.36s-40.96 122.88-102.4 143.36v107.52c117.76-25.6 204.8-128 204.8-250.88s-87.04-225.28-204.8-250.88z" p-id="489">
|
|
|
|
</path>
|
|
|
|
</svg>
|
|
|
|
</a>
|
|
|
|
</span>
|
|
|
|
<progress id="progressVoice" class="progressVoice" value="50" max="100"></progress>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<a id="fullScreenBtn"
|
|
|
|
class="fullScreenBtn" href="javascript:void(0)">
|
|
|
|
<svg class="icon" style="width: 1em;height: 1em;vertical-align: middle;fill: currentColor;overflow: hidden;" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="403">
|
|
|
|
<path d="M167.8 903.1c-11.5 0-22.9-4.4-31.7-13.1-17.5-17.5-17.5-45.8 0-63.3l221.1-221.1c17.5-17.5 45.9-17.5 63.3 0 17.5 17.5 17.5 45.8 0 63.3L199.4 890c-8.7 8.7-20.2 13.1-31.6 13.1zM638.5 432.4c-11.5 0-22.9-4.4-31.7-13.1-17.5-17.5-17.5-45.8 0-63.3l221.7-221.7c17.5-17.5 45.8-17.5 63.3 0s17.5 45.8 0 63.3L670.1 419.3c-8.7 8.7-20.2 13.1-31.6 13.1zM859.7 903.8c-11.5 0-23-4.4-31.7-13.1L606.7 668.8c-17.5-17.5-17.4-45.9 0.1-63.4s45.9-17.4 63.3 0.1l221.4 221.9c17.5 17.5 17.4 45.9-0.1 63.4-8.8 8.7-20.2 13-31.7 13zM389 432.1c-11.5 0-23-4.4-31.7-13.1L136.1 197.2c-17.5-17.5-17.4-45.9 0.1-63.4s45.9-17.4 63.3 0.1l221.2 221.7c17.5 17.5 17.4 45.9-0.1 63.4-8.7 8.7-20.2 13.1-31.6 13.1z" fill="#ffffff" p-id="404">
|
|
|
|
</path>
|
|
|
|
<path d="M145 370c-24.7 0-44.8-20.1-44.8-44.8V221.8C100.2 153.5 155.7 98 224 98h103.4c24.7 0 44.8 20.1 44.8 44.8s-20.1 44.8-44.8 44.8H224c-18.9 0-34.2 15.3-34.2 34.2v103.4c0 24.7-20.1 44.8-44.8 44.8zM883.3 370c-24.7 0-44.8-20.1-44.8-44.8V221.8c0-18.9-15.3-34.2-34.2-34.2H700.8c-24.7 0-44.8-20.1-44.8-44.8S676.1 98 700.8 98h103.5c68.2 0 123.8 55.5 123.8 123.8v103.5c0 24.7-20.1 44.7-44.8 44.7zM327.5 926.6H224c-68.2 0-123.8-55.5-123.8-123.8V699.4c0-24.7 20.1-44.8 44.8-44.8s44.8 20.1 44.8 44.8v103.5c0 18.9 15.3 34.2 34.2 34.2h103.5c24.7 0 44.8 20.1 44.8 44.8s-20.1 44.7-44.8 44.7zM804.3 926.6H700.8c-24.7 0-44.8-20.1-44.8-44.8s20.1-44.8 44.8-44.8h103.5c18.9 0 34.2-15.4 34.2-34.2V699.4c0-24.7 20.1-44.8 44.8-44.8 24.7 0 44.8 20.1 44.8 44.8v103.5c0 68.2-55.6 123.7-123.8 123.7z" fill="#ffffff" p-id="405">
|
|
|
|
</path>
|
|
|
|
</svg>
|
|
|
|
</a>
|
|
|
|
<span id="showLabel" class="showLabel"></span>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div> <!-- end player container -->
|
2017-11-15 12:04:05 +08:00
|
|
|
</div><!--videoFeed-->
|
2014-05-12 06:08:23 +08:00
|
|
|
<?php
|
2018-09-11 00:22:55 +08:00
|
|
|
} else {
|
2015-02-16 16:43:13 +08:00
|
|
|
?>
|
2017-10-05 23:20:42 +08:00
|
|
|
<div id="imageFeed">
|
2015-02-16 16:43:13 +08:00
|
|
|
<?php
|
2020-02-26 00:17:46 +08:00
|
|
|
if ( (ZM_WEB_STREAM_METHOD == 'mpeg') && ZM_MPEG_LIVE_FORMAT ) {
|
2019-12-03 04:34:31 +08:00
|
|
|
$streamSrc = $Event->getStreamSrc(array('mode'=>'mpeg', 'scale'=>$scale, 'rate'=>$rate, 'bitrate'=>ZM_WEB_VIDEO_BITRATE, 'maxfps'=>ZM_WEB_VIDEO_MAXFPS, 'format'=>ZM_MPEG_REPLAY_FORMAT, 'replay'=>$replayMode),'&');
|
2019-03-22 02:14:45 +08:00
|
|
|
outputVideoStream('evtStream', $streamSrc, reScale( $Event->Width(), $scale ).'px', reScale( $Event->Height(), $scale ).'px', ZM_MPEG_LIVE_FORMAT );
|
2016-09-29 21:28:48 +08:00
|
|
|
} else {
|
2019-12-03 04:34:31 +08:00
|
|
|
$streamSrc = $Event->getStreamSrc(array('mode'=>'jpeg', 'frame'=>$fid, 'scale'=>$scale, 'rate'=>$rate, 'maxfps'=>ZM_WEB_VIDEO_MAXFPS, 'replay'=>$replayMode),'&');
|
2017-05-19 02:55:53 +08:00
|
|
|
if ( canStreamNative() ) {
|
2019-03-22 02:14:45 +08:00
|
|
|
outputImageStream('evtStream', $streamSrc, reScale($Event->Width(), $scale).'px', reScale($Event->Height(), $scale).'px', validHtmlStr($Event->Name()));
|
2017-05-19 02:55:53 +08:00
|
|
|
} else {
|
2019-03-22 02:14:45 +08:00
|
|
|
outputHelperStream('evtStream', $streamSrc, reScale($Event->Width(), $scale).'px', reScale($Event->Height(), $scale).'px' );
|
2017-05-19 02:55:53 +08:00
|
|
|
}
|
2016-10-12 21:17:57 +08:00
|
|
|
} // end if stream method
|
2014-05-29 23:47:52 +08:00
|
|
|
?>
|
2017-11-24 05:24:57 +08:00
|
|
|
<div id="alarmCue" class="alarmCue"></div>
|
2017-10-13 20:58:07 +08:00
|
|
|
<div id="progressBar" style="width: <?php echo reScale($Event->Width(), $scale);?>px;">
|
|
|
|
<div class="progressBox" id="progressBox" title="" style="width: 0%;"></div>
|
|
|
|
</div><!--progressBar-->
|
2017-11-15 12:04:05 +08:00
|
|
|
</div><!--imageFeed-->
|
2019-02-25 23:21:43 +08:00
|
|
|
<?php
|
|
|
|
} /*end if !DefaultVideo*/
|
|
|
|
?>
|
2017-11-18 01:46:08 +08:00
|
|
|
<p id="dvrControls">
|
2019-09-27 04:26:37 +08:00
|
|
|
<button type="button" id="prevBtn" title="<?php echo translate('Prev') ?>" class="inactive" data-on-click-true="streamPrev">
|
|
|
|
<i class="material-icons md-18">skip_previous</i>
|
|
|
|
</button>
|
|
|
|
<button type="button" id="fastRevBtn" title="<?php echo translate('Rewind') ?>" class="inactive" data-on-click-true="streamFastRev">
|
|
|
|
<i class="material-icons md-18">fast_rewind</i>
|
|
|
|
</button>
|
|
|
|
<button type="button" id="slowRevBtn" title="<?php echo translate('StepBack') ?>" class="unavail" disabled="disabled" data-on-click-true="streamSlowRev">
|
|
|
|
<i class="material-icons md-18">chevron_left</i>
|
|
|
|
</button>
|
|
|
|
<button type="button" id="pauseBtn" title="<?php echo translate('Pause') ?>" class="inactive" data-on-click="pauseClicked">
|
|
|
|
<i class="material-icons md-18">pause</i>
|
|
|
|
</button>
|
|
|
|
<button type="button" id="playBtn" title="<?php echo translate('Play') ?>" class="active" disabled="disabled" data-on-click="playClicked">
|
|
|
|
<i class="material-icons md-18">play_arrow</i>
|
|
|
|
</button>
|
|
|
|
<button type="button" id="slowFwdBtn" title="<?php echo translate('StepForward') ?>" class="unavail" disabled="disabled" data-on-click-true="streamSlowFwd">
|
|
|
|
<i class="material-icons md-18">chevron_right</i>
|
|
|
|
</button>
|
|
|
|
<button type="button" id="fastFwdBtn" title="<?php echo translate('FastForward') ?>" class="inactive" data-on-click-true="streamFastFwd">
|
|
|
|
<i class="material-icons md-18">fast_forward</i>
|
|
|
|
</button>
|
|
|
|
<button type="button" id="zoomOutBtn" title="<?php echo translate('ZoomOut') ?>" class="unavail" disabled="disabled" data-on-click="streamZoomOut">
|
|
|
|
<i class="material-icons md-18">zoom_out</i>
|
|
|
|
</button>
|
|
|
|
<button type="button" id="nextBtn" title="<?php echo translate('Next') ?>" class="inactive" data-on-click-true="streamNext">
|
|
|
|
<i class="material-icons md-18">skip_next</i>
|
|
|
|
</button>
|
2008-07-14 21:54:50 +08:00
|
|
|
</p>
|
|
|
|
<div id="replayStatus">
|
2017-11-11 23:53:36 +08:00
|
|
|
<span id="mode"><?php echo translate('Mode') ?>: <span id="modeValue">Replay</span></span>
|
2019-12-21 00:02:12 +08:00
|
|
|
<span id="rate"><?php echo translate('Rate') ?>:
|
|
|
|
<?php
|
2020-10-16 05:17:20 +08:00
|
|
|
#rates are defined in skins/classic/includes/config.php
|
2020-01-08 03:49:58 +08:00
|
|
|
echo htmlSelect('rate', $rates, intval($rate), array('id'=>'rateValue'));
|
2019-12-21 00:02:12 +08:00
|
|
|
?>
|
|
|
|
<!--<span id="rateValue"><?php echo $rate/100 ?></span>x</span>-->
|
2017-11-15 12:04:05 +08:00
|
|
|
<span id="progress"><?php echo translate('Progress') ?>: <span id="progressValue">0</span>s</span>
|
2017-11-11 23:53:36 +08:00
|
|
|
<span id="zoom"><?php echo translate('Zoom') ?>: <span id="zoomValue">1</span>x</span>
|
2008-07-14 21:54:50 +08:00
|
|
|
</div>
|
2017-11-15 12:04:05 +08:00
|
|
|
</div><!--eventVideo-->
|
2015-04-14 00:41:21 +08:00
|
|
|
<?php
|
2016-10-13 03:39:32 +08:00
|
|
|
} // end if Event exists
|
2015-04-14 00:41:21 +08:00
|
|
|
?>
|
2020-12-01 23:07:42 +08:00
|
|
|
</div>
|
2017-11-15 12:04:05 +08:00
|
|
|
</div><!--content-->
|
2020-12-01 23:07:42 +08:00
|
|
|
|
2016-10-13 03:39:32 +08:00
|
|
|
</div><!--page-->
|
2020-09-03 05:56:30 +08:00
|
|
|
<?php xhtmlFooter() ?>
|