Я хочу отображать видеопоток в виде HTML-тега видео с камеры, снимающей вещи.
Я должен подключиться к камере с аутентификацией, поэтому я использую curl. Мне удалось сделать это и получить поток.
Теперь я должен лечить это.
Я получаю этот поток изображений JPEG. Кроме того, ни в коем случае не конвертировать данные в изображениях.
Вот часть моего тестового кода для отображения одного изображения:
$_SESSION['img'] = "";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://$ip/cgi-bin/mjpg/video.cgi');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($ch, CURLOPT_USERPWD, '$user:$pass');
curl_setopt($ch, CURLOPT_WRITEFUNCTION, function($ch, $str) use ($i) {
$pos = strpos($str, '--myboundary');
if ($pos !== FALSE && strlen($_SESSION['img']) > 0) {
//Complete the image data
$imagePart = substr($str, 0, $pos-1);
$_SESSION['img'] .= $imagePart;
//Parse data
$imgstr = str_replace("--myboundary\r\n", '', $_SESSION['img']);
$imgstr = str_replace("Content-Type: image/jpeg\r\n", '', $imgstr);
$imgstr = str_replace("Content-Length: ", '', $imgstr);
$imgstr = preg_replace("/\d+\r\n\r\n/", '', $imgstr);
//save in file - file not loaded
file_put_contents('img/test.jpg', $imgstr);
//generate image - doesn't work
$im = imagecreatefromstring($imgstr);
if ($im !== false) {
header("Content-Type: image/jpeg");
imagejpeg($im);
imagedestroy($im);
}
session_destroy();
die();
}
$_SESSION['img'] .= $str;
return strlen($str);
});
$output = curl_exec($ch);
curl_close($ch);
Если у вас есть идеи, дайте мне знать!
Спасибо
Задача ещё не решена.
Других решений пока нет …