Procházet zdrojové kódy

金家渠内网摄像头链接

任敬轩 před 2 roky
rodič
revize
0036c30fdb

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

@@ -213,6 +213,55 @@ class CameraApiController extends BaseController
         return self::successResponse($result);
     }
 
+    public function getLanCamerasUrl()
+    {
+        $parent_id = Input::get('parent_id', '');
+        $camera_id = Input::get('camera_id', '');
+
+        if (!$parent_id || !$camera_id) {
+            return self::errorResponse(ApiEnum::STATUS_CODE_EMPTY);
+        }
+
+        //判断摄像头来源是否为内网服务器
+        $camera_source = CameraList::where('id', $camera_id)->value('camera_source');
+
+        if ($camera_source == CameraEnum::CAMERA_SOURCE_3) {
+            $result = CameraServices::getIntranetCameraUrl($camera_id);
+            return self::successResponse($result);
+        }
+
+        //判断是否使用海康视频服务器
+        $is_hak = MineListExt::where('mine_id', $parent_id)->value('is_hak');
+
+        //判断是否生成摄像头请求链接
+        $camera_url = CameraList::where('id', $camera_id)->value('camera_url');
+
+        if ($is_hak && !$camera_url) {
+            //判断是否是mine配置文件的矿区
+            $mine_res = DB::table('mine_list')->where('id',$parent_id)->get();
+            //天地伟业
+            if(isset($mine_res[0]->title) && in_array($mine_res[0]->title,config('mine'))){
+                $result = CameraServices::getRtspTianDi($camera_id,$parent_id);
+                //宁煤集团
+            }elseif(isset($mine_res[0]->title) && in_array($mine_res[0]->title,config('mine_hls'))){
+                $result = CameraServices::getHkHls($camera_id,$parent_id);
+            }else{
+                $result = CameraServices::getLanCameraUrl($parent_id, $camera_id);
+            }
+        } else {
+            //判断硬盘录像机的有没有封面图,有的走easydrawin,没有的走ffmpeg
+            $cover_picture = CameraList::where('id', $camera_id)->value('cover_picture');
+//            if(!$cover_picture){
+            //ffmpeg拉流获取首帧图片
+//                $result = CameraServices::getCameraUrlByFfmpeg($camera_id);
+//            }else{
+            $result = CameraServices::getCameraUrlByCameraId($camera_id);
+//            }
+        }
+
+        return self::successResponse($result);
+    }
+
     //获取海康rtsp流
     public function getHikRtsp(){
         $parent_id = Input::get('parent_id', '');
@@ -508,4 +557,11 @@ class CameraApiController extends BaseController
 
         return self::successResponse($result);
     }
+
+    public function test(){
+        header("Access-Control-Allow-Origin: *");
+        $data = DB::table('goods')->get();
+        return $data;
+    }
+
 }

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

@@ -17,7 +17,7 @@ Route::middleware('auth:api')->namespace('Api')->group(function () {
     Route::post('camera/geturl', 'CameraApiController@getCamerasUrl');
     Route::post('camera/getrtsp', 'CameraApiController@getCamerasRtsp');
     Route::post('camera/transcode', 'CameraApiController@getTranscodeInfo');
-    Route::get('camera/stopstream', 'CameraApiController@stopCamerasStream');
+    Route::get('camera/stopstream', 'CameraApiController@stopCamerasS tream');
     Route::post('camera/lake/getlist', 'CameraApiController@getSouthLakeCamera');
     Route::post('camera/surface/getlist', 'CameraApiController@getWorkSurfaceCamera');
     Route::post('camera/get_hik_rtsp', 'CameraApiController@getHikRtsp');//海康获取rtsp流
@@ -26,6 +26,7 @@ Route::middleware('auth:api')->namespace('Api')->group(function () {
     Route::post('camera/playback/geturl', 'CameraApiController@getPlaybackUrl');//回放url
     Route::post('camera/playback/geturleasy', 'CameraApiController@getPlaybackUrlByEasy');//easydrawin回放url
     Route::post('camera/getcamerabytype', 'CameraApiController@getCameraByType');//通过摄像头类型获取所有摄像头
+    Route::post('camera/get_lan_url', 'CameraApiController@getCamerasLanUrl');//内网播放url
 
     //海康视频接口
     Route::get('haikang/monitor/regions/list', 'HaiKangController@getRegionsList');
@@ -36,4 +37,5 @@ Route::middleware('auth:api')->namespace('Api')->group(function () {
 
 Route::namespace('Api')->group(function () {
     Route::post('camera/getcamerabyminecode', 'CameraApiController@getCameraByMinecode');//高风险区域摄像头
+    Route::get('test', 'CameraApiController@test');
 });

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

@@ -1727,6 +1727,35 @@ class CameraServices
         return $data;
     }
 
+    //通过海康接口直接返回内网链接
+    public static function getLanCameraUrl($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);
+
+        //标记摄像头为在线状态
+        CameraList::where('id', $camera_id)->update(['camera_status' => CameraEnum::CAMERA_STATUS_ONLINE]);
+
+        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'        => 'rtmp'
+            ]
+        );
+        $haikang   = new HaiKangController();
+        $result['url'] = $haikang->getCamerasUrl();
+
+        return $result;
+    }
+
     //通过rtmp同步m3u8文件并返回url
     public static function downloadCameraFiles($parent_id, $camera_id)
     {