} if (!requireVer("1", "2")) { logXmlErr("H264 Event viewing requires eyeZm v1.2 or greater"); exit; } /* Good to go */ $fname = "capture.mp4"; $ffparms = getFfmpeg264FoutParms(validString(getset('br', ZM_EYEZM_H264_DEFAULT_EVBR)), $baseURL . "/" . $fname); } else { logXmlErr("Unknown codec " . $vcodec . " selected for event viewing"); exit; } } logXml("Selected " . $vcodec . " for viewing event " . $event['Id']); $fnameOut = $baseURL . "/" . $fname; $shellCmd = getFfmpegPath() . " -y -r " . $fps . " -i " . $baseURL . "/%0" . ZM_EVENT_IMAGE_DIGITS . "d-capture.jpg"; $shellCmd .= " " . $ffparms; logXml("Encoding event with command: " . $shellCmd); $shellOutput = shell_exec($shellCmd); /* Check that file exists */ if (!file_exists(trim($fnameOut))) { logXmlErr("Generate Event " . $event['Id'] . " file " . $fnameOut . " does not exist"); exit; } $url = "./" . getEventPathSafe($event) . "/" . $fname; logXml("Loading Event URL " . $url); header("Location: " . $url); exit; } else { if (!strcmp($action, "vframe")) { /* ACTION: View a frame given by an event and frame-id. Parms: <eid> <frame> [alarm | analyze | qty | scale]
/** Return FFMPEG parameters for H264 streaming */ function getFfmpeg264Str($width, $height, $br, $fin, $fout) { $ffparms = getFfmpeg264FoutParms($br, $fout); $ffstr = getFfmpegPath() . " -t " . ZM_EYEZM_H264_MAX_DURATION . " -analyzeduration 0 -i "; $ffstr .= $fin . " -f mpegts " . $ffparms; return $ffstr; }