瀏覽代碼

信息技术中心ws协议

任敬轩 2 年之前
父節點
當前提交
660bcf17d4

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

@@ -196,6 +196,10 @@ class CameraApiController extends BaseController
             //宁煤集团
             }elseif(isset($mine_res[0]->title) && in_array($mine_res[0]->title,config('mine_hls'))){
                 $result = CameraServices::getHkHls($camera_id,$parent_id);
+            //信息技术中心测试ws协议
+            }elseif($mine_res[0]-> slug == 'XinXiJiShuZhongXin'){
+                $result = CameraServices::getHkWs($camera_id,$parent_id);
+            //海康切片逻辑
             }else{
                 $result = CameraServices::downloadCameraFiles($parent_id, $camera_id);
             }

+ 85 - 0
Modules/Camera/Http/Controllers/Api/HaiKangController.php

@@ -715,6 +715,91 @@ class HaiKangController extends BaseController
         return $result;
     }
 
+    //海康ws协议获取url
+    public function getHikWs(){
+        $result['status'] = true;
+        $result['msg']    = ApiEnum::RETURN_SUCCESS;
+
+        $query = CameraList::where('id',Input::get('camera_id'))->first();
+
+        if (!$query) {
+            $result['status'] = false;
+            $result['msg'] = ApiEnum::NO_CAMERA_URL;
+            return $result;
+        }
+
+        $degree = MineList::where('id', $query->mine_id)->value('degree');
+
+        $mine_list = MineList::whereIn('id', explode('|', $degree))->select(['title'])->get()->toArray();
+
+        $path = '';
+        foreach ($mine_list as $key => $val) {
+            $path .= '/' . $val['title'];
+        }
+
+        $new_camera_name = str_replace('-','',$query->camera_name);
+        $new_camera_name = str_replace('#','号',$new_camera_name);
+        $path .= '/' . $new_camera_name;
+
+        if($query->code_stream == 2){
+            $code_stream = 0;
+        }else{
+            $code_stream = 1;
+        }
+
+        $url        = $this->artemis.'/api/video/v1/cameras/previewURLs';
+        $params['cameraIndexCode'] = $query->index_code;
+        $params['streamType']      = 0;  //0主码流 1子码流 2第三码流
+        $params['protocol']        = 'ws';//rtmp
+        $params['transmode']       = 1;  //0:UDP 1:TCP
+        $params['expand'] = 'streamform=rtp';
+
+        $this->sign = $this->get_sign($url);
+
+        $rtmp = $this->curlPost($this->pre_url . $url, json_encode($params));
+
+        $rtmp = json_decode($rtmp, true);
+
+        if($rtmp['data']['url']){
+            //访问记录
+            $log['mine_id'] = $query->mine_id;
+            $log['camera_id'] = Input::get('camera_id');
+            $log['log'] = '海康接口返回rtsp成功';
+            $log['status'] = 0;//正常
+            $log['created_at'] = date('Y-m-d H:i:s');
+            $log['updated_at'] = date('Y-m-d H:i:s');
+            DB::table('log')->insert($log);
+        }else{
+            //访问记录
+            $log['mine_id'] = $query->mine_id;
+            $log['camera_id'] = Input::get('camera_id');
+            $log['log'] = '海康接口返回rtsp失败';
+            $log['status'] = 1;//异常
+            $log['created_at'] = date('Y-m-d H:i:s');
+            $log['updated_at'] = date('Y-m-d H:i:s');
+            DB::table('log')->insert($log);
+        }
+
+        $ffmpeg_rtmp = $rtmp['data']['url'];
+
+        $rtmp['data']['url'] = substr_replace($rtmp['data']['url'],env('HK_HLS_JF'),0,20);
+
+        $result['data'] = [
+            'camera_id' => Input::get('camera_id'),
+            'url' => $rtmp['data']['url']
+        ];
+
+        //查询是否存在封面图
+        $cover_picture = CameraList::where('id', Input::get('camera_id'))->value('cover_picture');
+
+        if (!$cover_picture) {
+//            register_shutdown_function(array($this, "getFirstPicture"),$path,$ffmpeg_rtmp);
+            $this->getPictureByHk($query);
+        }
+
+        return $result;
+    }
+
     //宁煤通过海康接口获取首桢图片
     public function getPictureByHk($query){
         $url = $this->artemis.'/api/video1/manualCapture';

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

@@ -1168,6 +1168,26 @@ class CameraServices
         return $result;
     }
 
+    //海康ws协议url
+    public static function getHkWs($camera_id,$parent_id)
+    {
+        $mine_ext = DB::table('mine_list_ext')->where('mine_id',$parent_id)->get();
+
+        Input::replace(
+            [
+                'url'      => trim($mine_ext[0]->ip, '/') . ':' . $mine_ext[0]->port,
+                'key' => $mine_ext[0]->key,
+                'secret' => $mine_ext[0]->secret,
+                'camera_id' => $camera_id,
+                'parent_id' => $parent_id,
+            ]
+        );
+
+        $haikang = new HaiKangController();
+        $result = $haikang->getHikWs();
+        return $result;
+    }
+
     //海康easydrawin获取回放rtsp流
     public static function getPlaybackByEasy($camera_id,$start_time,$end_time,$time)
     {