50 lines
1.1 KiB
PHP
50 lines
1.1 KiB
PHP
<?php
|
|
|
|
namespace app\controllers;
|
|
|
|
use Yii;
|
|
use yii\web\Controller;
|
|
|
|
class CameraController extends Controller
|
|
{
|
|
public function actionStream($id, $scale = 50)
|
|
{
|
|
$cms = Yii::$app->params['cameras'];
|
|
if (!isset($cms[$id]))
|
|
{
|
|
throw new NotFoundHttpException();
|
|
}
|
|
if (!is_numeric($scale)) $scale = 50;
|
|
$zm_id = $cms[$id];
|
|
$source_url = Yii::$app->params['zmUrl'].'/cgi-bin/nph-zms?scale='.$scale.'&mode=jpeg&maxfps=30&buffer=1000&monitor='.$zm_id.'&connkey='.rand(0, 65536);
|
|
$fp = fopen($source_url, 'r', false);
|
|
if ($fp)
|
|
{
|
|
Yii::$app->response->format = \yii\web\Response::FORMAT_RAW;
|
|
// send mjpeg header:
|
|
header("Cache-Control: no-cache");
|
|
header("Cache-Control: private");
|
|
header("Pragma: no-cache");
|
|
header("Content-type: multipart/x-mixed-replace; boundary=ZoneMinderFrame");
|
|
|
|
// pass data
|
|
fpassthru($fp);
|
|
fclose($fp);
|
|
}
|
|
else throw new NotFoundHttpException();
|
|
}
|
|
|
|
public function actionView($id)
|
|
{
|
|
$cms = Yii::$app->params['cameras'];
|
|
if (!isset($cms[$id]))
|
|
{
|
|
throw new NotFoundHttpException();
|
|
}
|
|
return $this->render('view',
|
|
[
|
|
'id' => $id
|
|
]);
|
|
}
|
|
}
|