فهرست منبع

视频接口测试

任敬轩 6 ماه پیش
والد
کامیت
cf82acd20b

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

@@ -698,6 +698,9 @@ class CameraApiController extends BaseController
 //
 //            }
             elseif($parent_id == '6561'){//洗选执法记录仪hls
+                $result = CameraServices::getCameraWssUrl($parent_id, $camera_id);
+            }
+            elseif($parent_id == '7004'){//鹰骏一矿外网ws
                 $result = CameraServices::getCameraWsUrl($parent_id, $camera_id);
             }
             //海康切片逻辑

+ 33 - 1
Modules/Camera/Http/Controllers/Api/HaiKangController.php

@@ -261,7 +261,7 @@ class HaiKangController extends BaseController
     }
 
     //洗选执法记录仪
-    public function getWsCameraUrl(){
+    public function getWssCameraUrl(){
         if (!Input::has('cameraIndexCode')) {
             return $this->error(1, '缺少必要参数');
         }
@@ -292,6 +292,38 @@ class HaiKangController extends BaseController
         return $result;
     }
 
+    //鹰骏一矿ws
+    public function getWsCameraUrl(){
+        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/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['transmode']       = 1;  //0:UDP 1:TCP
+        $params['expand'] = 'streamform=rtp';
+
+        $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;
+    }
+
     //洗选执法记录仪对讲
     public function getHikTalkUrl(){
         if (!Input::has('cameraIndexCode')) {

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

@@ -1898,6 +1898,37 @@ class CameraServices
     }
 
     //洗选执法记录仪hls
+    public static function getCameraWssUrl($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],
+                'protocol'        => 'ws',
+                'parent_id'       => $parent_id
+            ]
+        );
+        $haikang   = new HaiKangController();
+        $result_hk = $haikang->getWssCameraUrl();
+
+        if ($result_hk['data']['url']) {
+            $result['data']['camera_id'] = $camera_id;
+            $result['data']['url'] = $result_hk['data']['url'];
+        }
+
+        return $result;
+    }
+
+    //鹰骏一矿ws
     public static function getCameraWsUrl($parent_id, $camera_id){
         $result['status'] = true;
         $result['msg']    = ApiEnum::RETURN_SUCCESS;