浏览代码

洗选执法记录仪

任敬轩 7 月之前
父节点
当前提交
223d2fbd48

+ 17 - 0
Modules/Camera/Http/Controllers/Api/CameraApiController.php

@@ -615,6 +615,23 @@ class CameraApiController extends BaseController
         return self::successResponse($result);
     }
 
+    //海康语音对讲
+    public function hikTalk(){
+        $parent_id = Input::get('parent_id', '');
+        $camera_id = Input::get('camera_id', '');
+
+        if (!$parent_id || !$camera_id) {
+            return self::errorResponse(ApiEnum::STATUS_CODE_EMPTY);
+        }
+
+        $result['status'] = true;
+        $result['msg']    = ApiEnum::RETURN_SUCCESS;
+
+        $result = CameraServices::getHikTalkUrl($parent_id,$camera_id);
+
+        return self::successResponse($result);
+    }
+
     //大华停止语音对讲
     public function dahuaStopTalk(){
         $parent_id = Input::get('parent_id', '');

+ 32 - 2
Modules/Camera/Http/Controllers/Api/HaiKangController.php

@@ -268,14 +268,14 @@ class HaiKangController extends BaseController
         $parent_id  = Input::get('parent_id');
         $protocol   = Input::get('protocol', 'hls');
         $streamType = Input::get('streamType', 1);
-        $url        = $this->artemis . '/api/video/v1/cameras/previewURLs';
+        $url        = $this->artemis . '/api/video/v2/cameras/previewURLs';
 //        $cameras_info = json_decode($this->getCamerasInfo(Input::all()), true);
         //请求参数
         $params = [];
 //        $params['regionIndexCode'] = $request->input('regionIndexCode');
         $params['cameraIndexCode'] = Input::get('cameraIndexCode');
         $params['streamType']      = $streamType;  //0主码流 1子码流 2第三码流
-        $params['protocol']        = 'ws';
+        $params['protocol']        = 'wss';
         $params['transmode']       = 1;  //0:UDP 1:TCP
         $params['expand'] = 'streamform=rtp';
 
@@ -292,6 +292,36 @@ class HaiKangController extends BaseController
         return $result;
     }
 
+    //洗选执法记录仪对讲
+    public function getHikTalkUrl(){
+        if (!Input::has('cameraIndexCode')) {
+            return $this->error(1, '缺少必要参数');
+        }
+        $parent_id  = Input::get('parent_id');
+        $protocol   = Input::get('protocol', 'hls');
+        $streamType = Input::get('streamType', 1);
+        $url        = $this->artemis . '/api/video/v1/cameras/talkURLs';
+//        $cameras_info = json_decode($this->getCamerasInfo(Input::all()), true);
+        //请求参数
+        $params = [];
+//        $params['regionIndexCode'] = $request->input('regionIndexCode');
+        $params['cameraIndexCode'] = Input::get('cameraIndexCode');
+        $params['transmode']       = 1;  //0:UDP 1:TCP
+        $params['expand'] = 'streamform=ps';
+
+        $this->sign = $this->get_sign($url);
+
+        $result = $this->curlPost($this->pre_url . $url, json_encode($params));
+        $result = json_decode($result, true);
+        if (isset($result['code']) && $result['code'] == 0 && $parent_id != 353) {  // 将内网地址替换为外网地址,除了羊二
+            $video_url = $result['data']['url'];
+            preg_match('/\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}/i', $video_url, $res);  // 提取内网ip
+            preg_match('/\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}/i', $this->pre_url, $res_n);  // 提取外网ip
+            $result['data']['url'] = str_replace($res, $res_n, $video_url);
+        }
+        return $result;
+    }
+
     /**
      * 获取摄像头码流url
      * @return array|mixed

+ 1 - 0
Modules/Camera/Routes/api.php

@@ -95,4 +95,5 @@ Route::namespace('Api')->group(function () {
     Route::post('task_xixuan/dahua_camera','TdwyController@dahuaCamera');//大华手动同步
     Route::post('task_xixuan/dahua_talk','CameraApiController@dahuaTalk');//大华语音对讲
     Route::post('task_xixuan/dahua_stop_talk','CameraApiController@dahuaStopTalk');//大华语音对讲
+    Route::post('task_xixuan/hik_talk','CameraApiController@hikTalk');//海康语音对讲
 });

+ 30 - 0
Modules/Camera/Services/CameraServices.php

@@ -1867,6 +1867,36 @@ class CameraServices
         return $result;
     }
 
+    //洗选执法记录仪对讲
+    public static function getHikTalkUrl($parent_id, $camera_id){
+        $result['status'] = true;
+        $result['msg']    = ApiEnum::RETURN_SUCCESS;
+
+        $query = MineListExt::where('mine_id', $parent_id)->first();
+
+        $camera = CameraList::find($camera_id);
+
+        Input::replace(
+            [
+                'url'             => trim($query->ip, '/') . ':' . $query->port,
+                'key'             => $query->key,
+                'secret'          => $query->secret,
+                'cameraIndexCode' => $camera->index_code,
+                'streamType'      => CameraEnum::CODE_STREAM_HAK[$camera->code_stream],
+                'parent_id'       => $parent_id
+            ]
+        );
+        $haikang   = new HaiKangController();
+        $result_hk = $haikang->getHikTalkUrl();
+
+        if ($result_hk['data']['url']) {
+            $result['data']['camera_id'] = $camera_id;
+            $result['data']['url'] = $result_hk['data']['url'];
+        }
+
+        return $result;
+    }
+
     //洗选执法记录仪hls
     public static function getCameraWsUrl($parent_id, $camera_id){
         $result['status'] = true;