MonitorId(), $monitor_ids ) ) { $view = 'error'; return; } } $Monitor = $Event->Monitor(); if (isset($_REQUEST['rate'])) { $rate = validInt($_REQUEST['rate']); } else if ( isset($_COOKIE['zmEventRate']) ) { $rate = $_COOKIE['zmEventRate']; } else { $rate = reScale(RATE_BASE, $Monitor->DefaultRate(), ZM_WEB_DEFAULT_RATE); } if (isset($_REQUEST['scale'])) { $scale = validInt($_REQUEST['scale']); } else if ( isset( $_COOKIE['zmEventScaleAuto'] ) ) { // If we're using scale to fit use it on all monitors $scale = 'auto'; } else if ( isset( $_COOKIE['zmEventScale'.$Event->MonitorId()] ) ) { $scale = $_COOKIE['zmEventScale'.$Event->MonitorId()]; } else { $scale = reScale(SCALE_BASE, $Monitor->DefaultScale(), ZM_WEB_DEFAULT_SCALE); } $codec = 'auto'; if (isset($_REQUEST['codec'])) { $codec = $_REQUEST['codec']; session_start(); $_SESSION['zmEventCodec'.$Event->MonitorId()] = $codec; session_write_close(); } else if ( isset( $_SESSION['zmEventCodec'.$Event->MonitorId()] ) ) { $codec = $_SESSION['zmEventCodec'.$Event->MonitorId()]; } else { $codec = $Monitor->DefaultCodec(); } $codecs = array( 'auto' => translate('Auto'), 'H264' => translate('H264'), 'H265' => translate('H265'), 'MJPEG' => translate('MJPEG'), ); $replayModes = array( 'none' => translate('None'), 'single' => translate('ReplaySingle'), 'all' => translate('ReplayAll'), 'gapless' => translate('ReplayGapless'), ); if ( isset( $_REQUEST['streamMode'] ) ) $streamMode = validHtmlStr($_REQUEST['streamMode']); else $streamMode = 'video'; $replayMode = ''; if ( isset( $_REQUEST['replayMode'] ) ) $replayMode = validHtmlStr($_REQUEST['replayMode']); if ( isset( $_COOKIE['replayMode']) && preg_match('#^[a-z]+$#', $_COOKIE['replayMode']) ) $replayMode = validHtmlStr($_COOKIE['replayMode']); if ( ( ! $replayMode ) or ( ! $replayModes[$replayMode] ) ) { $replayMode = 'none'; } // videojs zoomrotate only when direct recording $Zoom = 1; $Rotation = 0; if ( $Monitor->VideoWriter() == '2' ) { # Passthrough $Rotation = $Event->Orientation(); if ( in_array($Event->Orientation(),array('90','270')) ) $Zoom = $Event->Height()/$Event->Width(); } parseSort(); parseFilter( $_REQUEST['filter'] ); $filterQuery = $_REQUEST['filter']['query']; $connkey = generateConnKey(); $focusWindow = true; $popup = (isset($_REQUEST['popup']) && ($_REQUEST['popup'] == 1)); xhtmlHeaders(__FILE__, translate('Event') ); ?>
DefaultVideo() ) { ?>
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)); outputVideoStream( "evtStream", $streamSrc, reScale( $Event->Width(), $scale ), reScale( $Event->Height(), $scale ), ZM_MPEG_LIVE_FORMAT ); } else { $streamSrc = $Event->getStreamSrc( array( 'mode'=>'jpeg', '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 ) ); } } // end if stream method ?>

: Replay : x : 0s : 1x