浏览代码

海康获取rtsp流

任敬轩 3 年之前
父节点
当前提交
e41cd84252

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

@@ -102,6 +102,32 @@ class CameraApiController extends BaseController
         return self::successResponse($result);
     }
 
+    //获取海康rtsp流
+    public function getHikRtsp(){
+        $parent_id = Input::get('parent_id', '');
+        $camera_id = Input::get('camera_id', '');
+
+        if (!$parent_id || !$camera_id) {
+            return self::errorResponse(ApiEnum::STATUS_CODE_EMPTY);
+        }
+
+        //判断是否使用海康视频服务器
+        $is_hak = MineListExt::where('mine_id', $parent_id)->value('is_hak');
+
+        //判断是否生成摄像头请求链接
+        $camera_url = CameraList::where('id', $camera_id)->value('camera_url');
+
+        if ($is_hak == 1 && !$camera_url) {
+            $haikang = new HaiKangController();
+            $result = $haikang->getHkRtsp($camera_id);
+            return $result;
+        }else{
+            $result['status'] = false;
+            $result['msg']    = ApiEnum::HK_REQUEST_FAIL;
+            return $result;
+        }
+    }
+
     //海康摄像头easy_drawin方式获取url
     public function getCamerasRtsp()
     {

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

@@ -311,6 +311,44 @@ class HaiKangController extends BaseController
         return $result;
     }
 
+    public function getHkRtsp($camera_id){
+        $result['status'] = true;
+        $result['msg']    = ApiEnum::RETURN_SUCCESS;
+
+        $query = CameraList::where('id',$camera_id)->first();
+
+        if (!$query) {
+            $result['status'] = false;
+            $result['msg'] = ApiEnum::NO_CAMERA_URL;
+            return $result;
+        }
+
+        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']      = $code_stream;  //0主码流 1子码流 2第三码流
+        $params['protocol']        = 'rtsp';
+        $params['transmode']       = 1;  //0:UDP 1:TCP
+        $params['expand'] = 'streamform=rtp';
+
+        $this->sign = $this->get_sign($url);
+
+        $rtsp = $this->curlPost($this->pre_url . $url, json_encode($params));
+
+        $rtsp = json_decode($rtsp, true);
+
+        $data = [
+            'url'        => $rtsp['data']['url'],
+        ];
+
+        return $data;
+    }
+
     //海康easy_drawin获取rtsp并推流
     public function getRtspByCameraId(){
         $result['status'] = true;

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

@@ -20,6 +20,7 @@ Route::middleware('auth:api')->namespace('Api')->group(function () {
     Route::get('camera/stopstream', 'CameraApiController@stopCamerasStream');
     Route::post('camera/lake/getlist', 'CameraApiController@getSouthLakeCamera');
     Route::post('camera/surface/getlist', 'CameraApiController@getWorkSurfaceCamera');
+    Route::post('camera/get_hik_rtsp', 'CameraApiController@getHikRtsp');//海康获取rtsp流
 
     //海康视频接口
     Route::get('haikang/monitor/regions/list', 'HaiKangController@getRegionsList');