2016-03-31 23 views
0

richtig anzeigen Ich habe eine IP CCTV Kamera, die MJPEG unterstützt. Ich möchte Bild in HTML (vom PHP-Skript) zusammen mit anderen Daten anzeigen.Wie man MJPEG Schnappschuss von CCTV in PHP

Ich weiß, dass ich mit einem Screenshot von der Kamera bekommen:

http://username:[email protected]<servername>/Streaming/channels/1/picture 

aber wenn ich dieses einfache HTML-Code-Bild bin mit nicht immer angezeigt:

<html> 
    <body> 
    <IMG id="myImage" SRC='http://username:[email protected]/Streaming/channels/1/picture'> 
    </body> 
</html> 

Auf Microsoft Edge, Es ist nicht möglich, sich sogar in die Kamera einzuloggen. Auf Firefox funktioniert gut. Auf Chrome-Kamera wird protokolliert, jedoch wird das Bild nicht angezeigt.

Also die Frage ist, wie ich Bild in HTML oder besser in PHP bekommen kann, um es auf der Seite anzuzeigen. Ich bevorzuge, PHP zu verwenden, weil ich mehr Daten zur Seite, wie Temperatur etc. hinzufügen möchte.

Auch ist nett, das Bild zu erneuern, aber dieses kann in AJAX später getan werden.

Antwort

1

Verwenden Sie ein zweites PHP-Skript, um das Bild abzurufen, und verweisen Sie auf das <img>-Tag. Möglicherweise verwendet die Seite, auf der das Bild angezeigt wird, HTTPS, während die Kamera nur HTTP unterstützt. Proxying über PHP ermöglicht es, dass alles aus der gleichen Quelle kommt und PHP die HTTP-Authentifizierung übernimmt, wodurch alle Ihre Browser-Kompatibilitätsprobleme vermieden werden.

<IMG id="myImage" SRC='currentimage.php'>

currentimage.php:

<?php 
$crl = curl_init('http://<servername>/Streaming/channels/1/picture'); 
curl_setopt($crl, CURLOPT_HEADER, 1); 
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC); 
curl_setopt($crl, CURLOPT_USERPWD, 'username:password'); 
curl_setopt($crl, CURLOPT_RETURNTRANSFER, TRUE); 
$contents = curl_exec($crl); 
curl_close($crl); 

header("Content-Type: image/jpeg"); 
echo $contents; 
?> 

auf Serverlast zu sparen und ermöglichen es, mehr Verkehr zu handhaben, auch die zuletzt abgerufenen Bild in einer Datei für 5-10 Sekunden zwischenspeichern konnte , aber das ist ein separates Problem zu lösen.

+0

nicht für mich arbeiten, ich bin kein Bild mit dieser Methode bekommen – Tikky

+0

Und Sie haben ersetzt '' sowie 'username' und 'Passwort'? Was passiert, wenn Sie currentimage.php in einem Browser besuchen? Erhalten Sie einen Fehler? – omnichad

+0

ja, natürlich :-) Wenn ich auf currenimage.php zugreife, kann ich weder Bild noch irgendetwas anderes sehen – Tikky

-1

Dieser Code scheint gut für mich zu arbeiten:

<?php 
while (@ob_end_clean()); 
    header('Content-type: image/jpeg'); 
// create curl resource 
$ch = curl_init(); 
curl_setopt($ch, CURLOPT_USERAGENT, $useragent); 
curl_setopt($ch, CURLOPT_URL, 'http://<servername>/Streaming/channels/1/picture'); 
curl_setopt($ch, CURLOPT_HEADER, 0); 
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC); 
curl_setopt($ch, CURLOPT_USERPWD, 'username:password'); 
// $output contains the output string 
$output = curl_exec($ch); 
echo $output; 
// close curl resource to free up system resources 
curl_close($ch); 
?>