Forráskód Böngészése

回放接口修改

任敬轩 3 éve
szülő
commit
5afcdad41c

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

@@ -358,11 +358,14 @@ class HaiKangController extends BaseController
         $params['cameraIndexCode'] = $query->index_code;
         $params['recordLocation']      = 0;
         $params['protocol']        = 'rtsp';//rtsp
-        $params['transmode']        = 0;
+//        $params['transmode']        = 0;
         $params['beginTime']       = $start_time;
         $params['endTime']       = $end_time;
 //        $params['uuid'] = '';
 //        $params['expand'] = 'streamform=ps';
+        $params['streamType']      = 1;  //0主码流 1子码流 2第三码流
+        $params['transmode']       = 1;  //0:UDP 1:TCP
+        $params['expand'] = 'transcode=1&systemformat=ps&videotype=h264';
 
         $this->sign = $this->get_sign($url);
 
@@ -370,6 +373,14 @@ class HaiKangController extends BaseController
 
         $data = json_decode($data, true);
 
+        if (isset($data['code']) && $data['code'] == 0) {  // 将内网地址替换为外网地址
+            $video_url = $data['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
+            $data['data']['url'] = str_replace($res, $res_n, $video_url);
+        }
+
         if ($data['data']['url']) {
             $result['camera_id'] = $camera_id;
             $result['url'] = $data['data']['url'];
@@ -385,6 +396,7 @@ class HaiKangController extends BaseController
         $camera_id = Input::get('camera_id');
         $start_time = Input::get('start_time');
         $end_time = Input::get('end_time');
+        $stream_type = Input::get('stream_type');
 
         $query = CameraList::where('id', $camera_id)->first();
 
@@ -404,9 +416,12 @@ class HaiKangController extends BaseController
         $params['cameraIndexCode'] = $query->index_code;
         $params['recordLocation']      = 0;
         $params['protocol']        = 'rtmp';//rtsp
-        $params['transmode']        = 0;
+//        $params['transmode']        = 0;
         $params['beginTime']       = $start_time;
         $params['endTime']       = $end_time;
+        $params['streamType']      = $stream_type;  //0主码流 1子码流 2第三码流
+        $params['transmode']       = 1;  //0:UDP 1:TCP
+        $params['expand'] = 'transcode=1&systemformat=ps&videotype=h264';
 //        $params['uuid'] = '';
 //        $params['expand'] = 'streamform=ps';
 
@@ -416,6 +431,14 @@ class HaiKangController extends BaseController
 
         $data = json_decode($data, true);
 
+        if (isset($data['code']) && $data['code'] == 0) {  // 将内网地址替换为外网地址
+            $video_url = $data['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
+            $data['data']['url'] = str_replace($res, $res_n, $video_url);
+        }
+
         return $data;
     }
 

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

@@ -1007,6 +1007,7 @@ class CameraServices
                 'camera_id' => $camera_id,
                 'start_time' => $start_time,
                 'end_time' => $end_time,
+                'stream_type' => 1,
             ]
         );
 
@@ -1015,7 +1016,36 @@ class CameraServices
 
         if ($result_hk['data']['url']) {
             $res = self::getVideoStream($result_hk['data']['url'], $path, $camera_id);
-            $result['data'] = $res['data'];
+            if($res != false){
+                $result['data'] = $res['data'];
+            }else{//切换码流
+
+                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,
+                        'start_time' => $start_time,
+                        'end_time' => $end_time,
+                        'stream_type' => 0,
+                    ]
+                );
+                $result_hk = $haikang->getPlaybackRtmp();
+                if ($result_hk['data']['url']) {
+                    $res = self::getVideoStream($result_hk['data']['url'], $path, $camera_id);
+                    if($res != false){
+                        $result['data'] = $res['data'];
+                    }else{
+                        $result['status'] = false;
+                        $result['msg'] = '切片失败';
+                    }
+                }else {
+                    $result['status'] = false;
+                    $result['msg'] = ApiEnum::HK_REQUEST_FAIL;
+                }
+
+            }
         } else {
             $result['status'] = false;
             $result['msg'] = ApiEnum::HK_REQUEST_FAIL;