discripter
Новичок
1) Имеются - расшаренные в интернет IP камеры:
http://carwatch1.dlinkddns.com:8001/video/mjpg.cgi
http://driver.dlinkddns.com:8080/video/mjpg.cgi
Камеры марки D-Link 930L
2) Задача - ограничить доступ к камерам, автоматически давая временный доступ к видео потоку через php-скрипт, путем ретрансляции потока через данный скрипт.
3) Были испробованны различные варианты кода - с сокетами, курлом а так же обычным readfile, результат во всех случаях один и тот же - unable to connect to xxx.xxx.xx.xx:8001 (Connection refused)
Примеры кода:
На хостинге allow_url_fopen включен, с других сайтов все нормально скачивается, октрывается данным скриптом.
Куда копать? Как получить доступ к камерам из php скрипта?
http://carwatch1.dlinkddns.com:8001/video/mjpg.cgi
http://driver.dlinkddns.com:8080/video/mjpg.cgi
Камеры марки D-Link 930L
2) Задача - ограничить доступ к камерам, автоматически давая временный доступ к видео потоку через php-скрипт, путем ретрансляции потока через данный скрипт.
3) Были испробованны различные варианты кода - с сокетами, курлом а так же обычным readfile, результат во всех случаях один и тот же - unable to connect to xxx.xxx.xx.xx:8001 (Connection refused)
Примеры кода:
PHP:
$fp = fsockopen($ip, 8001, $errno, $errstr, 30);
if(!$fp) {
echo $errstr.' ('.$errno.')<br />'."\n";
} else {
$urlstring = "GET /video/mjpg.cgi HTTP/1.0\r\nAuthorization: BASIC ".base64_encode($user.':'.$pass)."\r\n\r\n";
fputs($fp, $urlstring);
while($str = trim(fgets($fp, 4096))) {
header($str);
}
fpassthru($fp);
flush();
fclose($fp);
}
PHP:
$boundary = "video boundary";
header("Cache-Control: no-cache");
header("Cache-Control: private");
header("Pragma: no-cache");
header("Content-type: image/jpeg");
print "--$boundary--\n";
@apache_setenv('no-gzip', 1);
@ini_set('zlib.output_compression', 0);
@ini_set('implicit_flush', 1);
for ($i = 0; $i < ob_get_level(); $i++) ob_end_flush();
ob_implicit_flush(1);
$rand = rand(1000,9999);
$url = 'http://carwatch1.dlinkddns.com:8001/video/mjpg.cgi?'.$rand;
$curl_handle=curl_init();
curl_setopt($curl_handle,CURLOPT_RETURNTRANSFER,1);
curl_setopt($curl_handle,CURLOPT_URL,$url);
curl_setopt($curl_handle, CURLOPT_USERPWD, "$user:$pass");
$buffer = curl_exec($curl_handle);
curl_close($curl_handle);
if (!empty($buffer)) {
print "Content-type: image/jpeg\n\n";
print $buffer;
} else {
print "Content-type: text/html\n\n";
print "No image.";
}
print "--$boundary--\n";
PHP:
header('Content-Type: multipart/x-mixed-replace; boundary=video boundary--');
ob_end_flush();
readfile('http://'.$user.':'.$pass.'@'.$ip.'/mjpg/video.mjpg');
Куда копать? Как получить доступ к камерам из php скрипта?
Последнее редактирование: