Antworten
Mrz 02, 2017 - 05:51
Du kannst zuerst das bild in einem webseitenelement testen, die url genauso wie im browser eingeben. Ansonsten musst du etwas mehr über die url und login erzählen. Auch evtl. Ohne authorizierung versuchen, sowie die url separat eintragen und user und passw auch.
Mrz 02, 2017 - 07:53
Also mein URL zum aufrufen des Bildes sieht folgendermassen aus:
Ich hoffe mit diesen infos könnt ihr mir weiter helfen!
http://192.168.10.100/webcam.php?usr=...
Wenn ich diese URL im webseiten element teste sehe ich im AIO config mode das bild siehe Screenshot:
wenn ich das dann in der Vorschau oder auf einem iphone ansehe bleibt alles schwarz auch hiervon mal ein screenshot:
Hier noch das script das die bilder im Webbrowser ausgibt:
$ip = "192.168.10.100"; // IP-Adresse eures Synology-NAS
$port = "5000"; // default Port der Surveillance Station
// *******************************************************************************
***
// Anmelden an der Surveillance Station und sid zurückgeben
// *******************************************************************************
***
function getSid($user, $pass, $ip, $port) {
$link_login = 'http://' . $ip . ':' . $port . '/webapi/auth.cgi?api=SYNO.API.Auth&method=Login&version=3&account=' . $user . '&passwd=' . $pass . '&session=SurveillanceStation&format=sid';
// Eventuell müsst ihr die URLs von HTTP auf HTTPS anpassen, sofern ihr HTTPS aktiviert habt!
// Authentifizierung an Synology Surveillance Station WebAPI und auslesen der SID
$json = file_get_contents ( $link_login );
$obj = json_decode ( $json, true );
@$sid = $obj ["data"] ["sid"];
return $sid;
}
// *******************************************************************************
***
// Link für MJPEG von Surveillance Station lesen
// *******************************************************************************
***
function getStreamLink($user, $pass, $ip, $port, $cameraID) {
$sid = getSid ( $user, $pass, $ip, $port );
$link_stream = 'http://' . $ip . ':' . $port . '/webapi/SurveillanceStation/videoStreaming.cgi?api=SYNO.SurveillanceStation.Vi
deoStream&version=1&method=Stream&cameraId=' . $cameraID . '&format=mjpeg&_sid=' . $sid;
return $link_stream;
}
// *******************************************************************************
***
// Link für JPEG von Surveillance Station lesen
// *******************************************************************************
***
function getImageLink($user, $pass, $ip, $port, $cameraID) {
$sid = getSid ( $user, $pass, $ip, $port );
$link_image = 'http://' . $ip . ':' . $port . '/webapi/entry.cgi?camStm=1&version=8&cameraId=' . $cameraID . '&api="SYNO.SurveillanceStation.Camera"&preview=true&method=GetSnapshot&_sid=' . $sid;
return $link_image;
}
// *******************************************************************************
***
// MJPEG Stream von Surveillance Station ausgeben
// *******************************************************************************
***
function printStream($user, $pass, $ip, $port, $cameraID) {
$link_stream = getStreamLink ( $user, $pass, $ip, $port, $cameraID );
set_time_limit ( 60 );
$r = "";
$i = 0;
$boundary = "\n--myboundary";
$new_boundary = "newboundary";
$f = fopen ( $link_stream, "r" );
if (! $f) {
// **** cannot open
print "error";
} else {
// **** URL OK
header ( "Cache-Control: no-store, no-cache, must-revalidate, pre-check=0, post-check=0, max-age=0" );
header ( "Cache-Control: private" );
header ( "Pragma: no-cache" );
header ( "Expires: -1" );
header ( "Content-type: multipart/x-mixed-replace;boundary={$new_boundary}" );
while ( true ) {
while ( substr_count ( $r, "Content-Length:" ) != 2 ) {
$r .= fread ( $f, 32 );
}
$pattern = "/Content-Length\:\s([0-9]+)\s\n(.+)/i";
preg_match ( $pattern, $r, $matches, PREG_OFFSET_CAPTURE );
$start = $matches [2] [1];
$len = $matches [1] [0];
$end = strpos ( $r, $boundary, $start ) - 1;
$frame = substr ( "$r", $start + 2, $len );
print "--{$new_boundary}\n";
print "Content-type: image/jpeg\n";
print "Content-Length: ${len}\n\n";
print $frame;
usleep ( 40 * 1000 );
$r = substr ( "$r", $start + 2 + $len );
}
}
fclose ( $f );
}
// *******************************************************************************
***
// JPEG Image von Surveillance Station ausgeben
// *******************************************************************************
***
function printImage($user, $pass, $ip, $port, $cameraID) {
$link_image = getImageLink ( $user, $pass, $ip, $port, $cameraID );
$image = file_get_contents ( $link_image );
header ( "Cache-Control: no-store, no-cache, must-revalidate, pre-check=0, post-check=0, max-age=0" );
header ( "Cache-Control: private" );
header ( "Pragma: no-cache" );
header ( "Expires: -1" );
header ( "Content-type: image/jpeg" );
header ( "Content-Length: " . ( string ) (filesize ( $image )) );
print $image;
}
// *******************************************************************************
***
// Stream als MJPEG ausgeben
// http://nas-stueben.goip.de/webcam.php?usr=&pwd=&cam=<1|2|...>&format=
// *******************************************************************************
***
$user = $_GET ["usr"]; // Synology Benutzer mit Berechtigung die Kamera anzuzeigen
$pass = $_GET ["pwd"]; // Passwort zu eben eingegebenem Benutzer
$cameraID = $_GET ["cam"]; // ID der Kamera, welche angezeigt werden soll
$format = $_GET ["format"]; // format = jpeg für Image oder mjpeg für Stream
if (strtolower ( $format ) == "jpeg") {
printImage ( $user, $pass, $ip, $port, $cameraID );
} else {
printStream ( $user, $pass, $ip, $port, $cameraID );
}
?>/**
* Created by PhpStorm.
* User: filliboy
* Date: 01.03.17
* Time: 20:44
*/
Ich hoffe mit diesen infos könnt ihr mir weiter helfen!
Neuen Kommentar hinzufügen