PHP открытие видеопотока mjpeg с IP камеры

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)

Примеры кода:
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');
На хостинге allow_url_fopen включен, с других сайтов все нормально скачивается, октрывается данным скриптом.

Куда копать? Как получить доступ к камерам из php скрипта?
 
Последнее редактирование:

discripter

Новичок
плохо разбираюсь в данном вопросе, есть еще ссылки на полезные материалы, желательно русскоязычные?
на Ваш взгляд какой конкретно способ из представленных на сайте мне больше подойдет?
 

WMix

герр M:)ller
Партнер клуба
я намекал что не через скрипт поток пропускать, а скриптом создавать стрим каналы на медиасервере. чувствуя твои начинания, предложил VLC, довольно простая штучка, и можно поначалу просто мышкой поиграть и подумать.

как опубликовать стрим, это еще один вопрос. в каком формате поток?
 

discripter

Новичок
я намекал что не через скрипт поток пропускать, а скриптом создавать стрим каналы на медиасервере. чувствуя твои начинания, предложил VLC, довольно простая штучка, и можно поначалу просто мышкой поиграть и подумать.

как опубликовать стрим, это еще один вопрос. в каком формате поток?
Поток формате mjpeg

Не заморачивался с медиасерверами - задача реализовать самым простым способом.

Указанные примеры кода работают судя по отзывам в инетрнете, однако не для моих камер (
 

WMix

герр M:)ller
Партнер клуба
медиасервер это самый простой способ, и ни кто не говорил что будет совсем легко!
mjpeg слишком абстрактно. сжатие какое?
 

discripter

Новичок
медиасервер это самый простой способ, и ни кто не говорил что будет совсем легко!
mjpeg слишком абстрактно. сжатие какое?
http://www.dlink.ru/mn/products/1433/1531_b.html
Поддержка алгоритмов сжатия видео
• MJPEG
• JPEG для покадровой съемки
 
Сверху