'; } public function captureSnapshot() { $outputFile = 'snapshot_' . date('YmdHis') . '.jpg'; $command = "ffmpeg -i {$this->videoSrc} -i {$this->logoPath} -filter_complex 'overlay=10:10' -vframes 1 -q:v 2 {$outputFile}"; exec($command, $output, $returnVar); if ($returnVar !== 0) { return "Fehler beim Erstellen des Snapshots."; } header('Content-Type: application/octet-stream'); header('Content-Disposition: attachment; filename="' . $outputFile . '"'); readfile($outputFile); unlink($outputFile); exit; } public function captureVideoSequence($duration = 10) { $outputFile = 'sequence_' . date('YmdHis') . '.mp4'; $command = "ffmpeg -i {$this->videoSrc} -i {$this->logoPath} -filter_complex 'overlay=10:10' -t {$duration} -c:v libx264 -preset fast -crf 23 {$outputFile}"; exec($command, $output, $returnVar); if ($returnVar !== 0) { return "Fehler beim Erstellen der Video-Sequenz."; } header('Content-Type: video/mp4'); header('Content-Disposition: attachment; filename="' . $outputFile . '"'); readfile($outputFile); unlink($outputFile); exit; } public function getJavaScript() { return " document.addEventListener('DOMContentLoaded', function () { var video = document.getElementById('webcam-player'); var videoSrc = '{$this->videoSrc}'; if (Hls.isSupported()) { var hls = new Hls(); hls.loadSource(videoSrc); hls.attachMedia(video); hls.on(Hls.Events.MANIFEST_PARSED, function () { video.play(); }); } else if (video.canPlayType('application/vnd.apple.mpegurl')) { video.src = videoSrc; video.addEventListener('loadedmetadata', function () { video.play(); }); } }); "; } public function setVideoSrc($src) { $this->videoSrc = $src; } } class GuestbookManager { private $entries = []; private $dbFile = 'guestbook.json'; public function __construct() { if (file_exists($this->dbFile)) { $this->entries = json_decode(file_get_contents($this->dbFile), true); } } public function handleFormSubmission() { if (isset($_POST['guestbook'], $_POST['guest-name'], $_POST['guest-message'])) { $this->addEntry($_POST['guest-name'], $_POST['guest-message']); $this->saveEntries(); } } private function addEntry($name, $message) { $this->entries[] = [ 'name' => $name, 'message' => $message, 'date' => date('Y-m-d H:i:s') ]; } public function deleteEntry($index) { if (isset($this->entries[$index])) { unset($this->entries[$index]); $this->entries = array_values($this->entries); // Re-index the array $this->saveEntries(); return true; } return false; } private function saveEntries() { file_put_contents($this->dbFile, json_encode($this->entries)); } public function displayForm() { return '
'; } public function displayEntries($isAdmin = false) { $output = '{$entry['message']}
{$entry['date']}"; if ($isAdmin) { $output .= ""; } $output .= "{$feedback['message']}
"; $output .= "{$feedback['date']}"; $output .= "
Erleben Sie faszinierende Ausblicke der Züricher Region - in Echtzeit!
Klicke auf den QR-Code, um die URL zu kopieren
{$_SESSION['error']}
"; unset($_SESSION['error']); } echo $guestbookManager->displayForm(); echo $guestbookManager->displayEntries($adminManager->isAdmin()); ?>Haben Sie Fragen, Anregungen oder möchten uns unterstützen? Wir freuen uns auf Ihre Nachricht!
displayForm(); ?>Aurora Wetter Lifecam ist ein Herzensprojekt von Wetterbegeisterten. Wir möchten Ihnen die Schönheit der Natur und Faszination des Wetters näher bringen.
Dazu betreiben wir seit 2010 rund um die Uhr hochauflösende Webcams. Besonders stolz sind wir auf einzigartige Einblicke, wie z.B. die Trainingsflüge der Patrouille Suisse jeden Montagmorgen.