diff options
-rw-r--r-- | localwebsite/handlers/MiscHandler.php | 89 | ||||
-rw-r--r-- | localwebsite/templates-web/cams.twig | 21 |
2 files changed, 0 insertions, 110 deletions
diff --git a/localwebsite/handlers/MiscHandler.php b/localwebsite/handlers/MiscHandler.php index efaca22..4e7291e 100644 --- a/localwebsite/handlers/MiscHandler.php +++ b/localwebsite/handlers/MiscHandler.php @@ -19,95 +19,6 @@ class MiscHandler extends RequestHandler $this->tpl->render_page('sensors.twig'); } - public function GET_cams() { - global $config; - - list($hls_debug, $video_events, $high, $camera_ids) = $this->input('b:hls_debug, b:video_events, b:high, id'); - if ($camera_ids != '') { - $camera_param = $camera_ids; - $camera_ids = explode(',', $camera_ids); - $camera_ids = array_filter($camera_ids); - $camera_ids = array_map('trim', $camera_ids); - $camera_ids = array_map('intval', $camera_ids); - } else { - $camera_ids = array_keys($config['cam_list']['labels']); - $camera_param = ''; - } - - $tab = $high ? 'high' : 'low'; - - // h264 - $js_hls_config = [ - 'opts' => [ - 'startPosition' => -1, - - // // https://github.com/video-dev/hls.js/issues/3884#issuecomment-842380784 - 'liveSyncDuration' => 2, - 'liveMaxLatencyDuration' => 3, - 'maxLiveSyncPlaybackRate' => 2, - 'liveDurationInfinity' => true, - ], - 'debugVideoEvents' => !!$video_events, - ]; - if ($hls_debug) - $js_hls_config['debug'] = true; - - // h265 - $js_h265webjs_config = [ - // https://github.com/numberwolf/h265web.js/blob/master/README_EN.MD#freetoken - 'token' => 'base64:QXV0aG9yOmNoYW5neWFubG9uZ3xudW1iZXJ3b2xmLEdpdGh1YjpodHRwczovL2dpdGh1Yi5jb20vbnVtYmVyd29sZixFbWFpbDpwb3JzY2hlZ3QyM0Bmb3htYWlsLmNvbSxRUTo1MzEzNjU4NzIsSG9tZVBhZ2U6aHR0cDovL3h2aWRlby52aWRlbyxEaXNjb3JkOm51bWJlcndvbGYjODY5NCx3ZWNoYXI6bnVtYmVyd29sZjExLEJlaWppbmcsV29ya0luOkJhaWR1', - ]; - - $js_config = [ - 'isLow' => $tab == 'low', - 'proto' => config::get('cam_hls_proto'), - 'host' => config::get('cam_hls_host'), - 'camIds' => $camera_ids, - 'camLabels' => array_map(fn($id) => $config['cam_list']['labels'][$id], $camera_ids) - ]; - - $cams_by_type = []; - $include_h264 = false; - $include_h265 = false; - foreach ($camera_ids as $camera_id) { - $var_name = 'include_'.$config['cam_list']['full'][$camera_id]['type']; - $cams_by_type[$camera_id] = $config['cam_list']['full'][$camera_id]['type']; - $$var_name = true; - } - if ($include_h264) { - $js_config['hlsConfig'] = $js_hls_config; - $this->tpl->add_static('hls.js'); - } - if ($include_h265) { - $js_config['h265webjsConfig'] = $js_h265webjs_config; - $this->tpl->add_static('h265webjs-dist/missile.js'); - $this->tpl->add_static('h265webjs-dist/h265webjs-v20221106-reminified.js'); - } - - $js_config['camsByType'] = $cams_by_type; - - $hls_key = config::get('cam_hls_access_key'); - if ($hls_key) - setcookie_safe('hls_key', $hls_key); - - // $cam_filter = function($id) use ($config, $camera_ids) { - // return in_array($id, $camera_ids); - // }; - - $this->tpl->set([ - 'js_config' => $js_config, - - // 'hls_access_key' => $config['cam_hls_access_key'], - - 'camera_param' => $camera_param, - // 'cams' => array_values(array_filter($config['cam_list'][$tab], $cam_filter)), - 'tab' => $tab, - 'video_events' => $video_events - ]); - $this->tpl->set_title('Камеры'); - $this->tpl->render_page('cams.twig'); - } - public function GET_cams_stat() { global $config; list($ip, $port) = explode(':', $config['ipcam_server_api_addr']); diff --git a/localwebsite/templates-web/cams.twig b/localwebsite/templates-web/cams.twig deleted file mode 100644 index 38b2954..0000000 --- a/localwebsite/templates-web/cams.twig +++ /dev/null @@ -1,21 +0,0 @@ -{% include 'bc.twig' with { - history: [ - {text: "Камеры" } - ] -} %} - -<nav> - <div class="nav nav-tabs" id="nav-tab"> - <a href="/cams/{{ camera_param ? camera_param~"/" : "" }}" class="text-decoration-none"><button class="nav-link{% if tab == 'low' %} active{% endif %}" type="button">Low-res</button></a> - <a href="/cams/{{ camera_param ? camera_param~"/" : "" }}?high=1" class="text-decoration-none"><button class="nav-link{% if tab == 'high' %} active{% endif %}" type="button">High-res</button></a> - </div> -</nav> - -<div id="videos" class="camfeeds"></div> - -{% js %} -if (isTouchDevice()) { - addClass(ge('videos'), 'is_mobile'); -} -Cameras.init({{ js_config|json_encode|raw }}); -{% endjs %}
\ No newline at end of file |