Bladeren bron

回放存在标识

任敬轩 2 jaren geleden
bovenliggende
commit
ce510f6e44

+ 30 - 0
Modules/Camera/Database/Migrations/2022_07_21_180042_update_play_back_table.php

@@ -0,0 +1,30 @@
+<?php
+
+use Illuminate\Support\Facades\Schema;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Database\Migrations\Migration;
+
+class UpdatePlayBackTable extends Migration
+{
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        Schema::table('playback', function (Blueprint $table) {
+            $table->string('revert_back_id')->default('NullId')->comment('easydrawin回放标识');
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        //
+    }
+}

+ 6 - 2
Modules/Camera/Http/Controllers/Api/CameraApiController.php

@@ -277,6 +277,8 @@ class CameraApiController extends BaseController
 
     //回放URL
     public function getPlaybackUrl(){
+        $time['start_time'] = Input::get('start_time', '');
+        $time['end_time'] = Input::get('end_time', '');
         $camera_id = Input::get('camera_id', '');
         $start_time = Input::get('start_time', '');
         $end_time = Input::get('end_time', '');
@@ -327,13 +329,15 @@ class CameraApiController extends BaseController
             $result = CameraServices::getPlaybackRtsp($camera_id,$start_time,$end_time);
             return self::successResponse($result);
         }else{
-            $result = CameraServices::getPlaybackRtmp($camera_id,$start_time,$end_time);
+            $result = CameraServices::getPlaybackRtmp($camera_id,$start_time,$end_time,$time);
             return self::successResponse($result);
         }
     }
 
     //easydrawin回放URL
     public function getPlaybackUrlByEasy(){
+        $time['start_time'] = Input::get('start_time', '');
+        $time['end_time'] = Input::get('end_time', '');
         $camera_id = Input::get('camera_id', '');
         $start_time = Input::get('start_time', '');
         $end_time = Input::get('end_time', '');
@@ -384,7 +388,7 @@ class CameraApiController extends BaseController
             $result = CameraServices::getPlaybackRtsp($camera_id,$start_time,$end_time);
             return self::successResponse($result);
         }else{
-            $result = CameraServices::getPlaybackByEasy($camera_id,$start_time,$end_time);
+            $result = CameraServices::getPlaybackByEasy($camera_id,$start_time,$end_time,$time);
             return self::successResponse($result);
         }
     }

+ 19 - 6
Modules/Camera/Http/Controllers/Api/HaiKangController.php

@@ -399,6 +399,7 @@ class HaiKangController extends BaseController
         $camera_id = Input::get('camera_id');
         $start_time = Input::get('start_time');
         $end_time = Input::get('end_time');
+        $old_time = Input::get('time');
 
         $query = CameraList::where('id', $camera_id)->first();
 
@@ -417,13 +418,21 @@ class HaiKangController extends BaseController
         $new_camera_name = str_replace('#','号',$new_camera_name);
         $path .= '/' . $new_camera_name.'回放'.$time;
 
+        $playback = DB::table('playback')
+            ->where('camera_id',$camera_id)
+            ->where('start_time',$old_time['start_time'])
+            ->where('end_time',$old_time['end_time'])
+            ->where('deleted_at',null)->get();
+
         //已有拉流id,直接返回拉流链接
-        if($query->revert_back_id != 'NullId'){
-            $result['data'] = [
-                'camera_id' => $camera_id,
-                'url' => env('EASY_DARWIN_JF_RTSP') .  $path
-            ];
-            return  $result;
+        if(count($playback)>0){
+            if($playback[0]->revert_back_id != 'NullId'){
+                $result['data'] = [
+                    'camera_id' => $camera_id,
+                    'url' => env('EASY_DARWIN_JF_RTSP') .  $path
+                ];
+                return  $result;
+            }
         }
 
         $url        = $this->artemis.'/api/video/v1/cameras/playbackURLs';
@@ -474,6 +483,10 @@ class HaiKangController extends BaseController
 //                'revert_back_id'  => trim($curl_res, '"'),
 //            ]
 //        );
+        if(count($playback)>0){
+            $back_data['revert_back_id'] = trim($curl_res, '"');
+            DB::table('playback')->where('id',$playback[0]->id)->update($back_data);
+        }
 
         $result['data'] = [
             'camera_id' => Input::get('camera_id'),

+ 35 - 25
Modules/Camera/Services/CameraServices.php

@@ -972,7 +972,7 @@ class CameraServices
     }
 
     //海康easydrawin获取回放rtsp流
-    public static function getPlaybackByEasy($camera_id,$start_time,$end_time)
+    public static function getPlaybackByEasy($camera_id,$start_time,$end_time,$time)
     {
         $query = CameraList::where('id', $camera_id)->first();
 
@@ -989,6 +989,7 @@ class CameraServices
                 'camera_id' => $camera_id,
                 'start_time' => $start_time,
                 'end_time' => $end_time,
+                'time'=>$time,
             ]
         );
 
@@ -998,7 +999,7 @@ class CameraServices
     }
 
     //海康ffmpeg获取回放rtmp流
-    public static function getPlaybackRtmp($camera_id,$start_time,$end_time)
+    public static function getPlaybackRtmp($camera_id,$start_time,$end_time,$time)
     {
         $result['status'] = true;
         $result['msg']    = ApiEnum::RETURN_SUCCESS;
@@ -1014,14 +1015,22 @@ class CameraServices
         }
         $path .= $query->camera_name . '/回放/' . $start_time.'-'.$end_time;
 
+        $playback = DB::table('playback')
+            ->where('camera_id',$camera_id)
+            ->where('start_time',$time['start_time'])
+            ->where('end_time',$time['end_time'])
+            ->where('deleted_at',null)->get();
+
         //如果m3u8文件已拉取,直接返回播放链接
-//        if ($query->revert_id == CameraEnum::CAMERA_FILE_EXIST) {
-//            $result['data'] = [
-//                'camera_id' => $camera_id,
-//                'url' => env('VIDEO_SYSTEM_URL') . CameraEnum::M3U8_FILE_PATH . '/' . $path . '/' . CameraEnum::M3U8_FILE_NAME . '?' . time(),
-//            ];
-//            return $result;
-//        }
+        if(count($playback)>0){
+            if ($playback[0]->revert_back_id == CameraEnum::CAMERA_FILE_EXIST) {
+                $result['data'] = [
+                    'camera_id' => $camera_id,
+                    'url' => env('VIDEO_SYSTEM_URL') . CameraEnum::M3U8_FILE_PATH . '/' . $path . '/' . CameraEnum::M3U8_FILE_NAME . '?' . time(),
+                ];
+                return $result;
+            }
+        }
 
         $mine_ext = DB::table('mine_list_ext')->where('mine_id',$degree[0])->get();
 
@@ -1041,7 +1050,7 @@ class CameraServices
         $result_hk = $haikang->getPlaybackRtmp();
 
         if ($result_hk['data']['url']) {
-            $res = self::getVideoBackStream($result_hk['data']['url'], $path, $camera_id);
+            $res = self::getVideoBackStream($result_hk['data']['url'], $path, $camera_id,$time);
             if($res != false){
                 $result['data'] = $res['data'];
             }else{//切换码流
@@ -1059,7 +1068,7 @@ class CameraServices
                 );
                 $result_hk = $haikang->getPlaybackRtmp();
                 if ($result_hk['data']['url']) {
-                    $res = self::getVideoBackStream($result_hk['data']['url'], $path, $camera_id);
+                    $res = self::getVideoBackStream($result_hk['data']['url'], $path, $camera_id,$time);
                     if($res != false){
                         $result['data'] = $res['data'];
                     }else{
@@ -1213,7 +1222,7 @@ class CameraServices
 
         //清空海康视频服务器已存在id
         CameraList::where('revert_id', CameraEnum::CAMERA_FILE_EXIST)->update(['revert_id' => CameraEnum::CAMERA_DEFAULT_REVERT_ID]);
-
+        DB::table('playback')->where('revert_back_id',CameraEnum::CAMERA_FILE_EXIST)->update(['revert_back_id' => CameraEnum::CAMERA_DEFAULT_REVERT_ID]);
         //递归删除目录
         $dir = public_path() . '/files/video/m3u8/';
         if (is_dir($dir)) {
@@ -1256,12 +1265,8 @@ class CameraServices
                             'updated_at' => date('Y-m-d H:i:s'),
                         ]
                     );
-                    CameraList::where('revert_back_id', $val['id'])->update(
-                        [
-                            'revert_back_id'  => CameraEnum::CAMERA_DEFAULT_REVERT_ID,
-                            'updated_at' => date('Y-m-d H:i:s'),
-                        ]
-                    );
+                    $back_data['revert_back_id'] = CameraEnum::CAMERA_DEFAULT_REVERT_ID;
+                    DB::table('playback')->where('revert_back_id',$val['id'])->update($back_data);
                     $success_jf++;
                 } else {
                     Log::info('流媒体服务器停止推流失败id:' . $val['id']);
@@ -1278,12 +1283,8 @@ class CameraServices
                     'updated_at' => date('Y-m-d H:i:s'),
                 ]
             );
-            CameraList::where('revert_back_id', '!=', CameraEnum::CAMERA_DEFAULT_REVERT_ID)->update(
-                [
-                    'revert_back_id'  => CameraEnum::CAMERA_DEFAULT_REVERT_ID,
-                    'updated_at' => date('Y-m-d H:i:s'),
-                ]
-            );
+            $back_data['revert_back_id'] = CameraEnum::CAMERA_DEFAULT_REVERT_ID;
+            DB::table('playback')->where('revert_back_id', '!=', CameraEnum::CAMERA_DEFAULT_REVERT_ID)->update($back_data);
         }
 
 
@@ -1796,7 +1797,7 @@ class CameraServices
     }
 
     //回放获取视频流
-    public static function getVideoBackStream($video_url, $path, $camera_id)
+    public static function getVideoBackStream($video_url, $path, $camera_id,$time)
     {
         $result = [];
 
@@ -1860,6 +1861,15 @@ class CameraServices
                 ];
 
 //                CameraList::where('id', $camera_id)->update(['revert_id' => CameraEnum::CAMERA_FILE_EXIST]);
+                $playback = DB::table('playback')
+                    ->where('camera_id',$camera_id)
+                    ->where('start_time',$time['start_time'])
+                    ->where('end_time',$time['end_time'])
+                    ->where('deleted_at',null)->get();
+                if(count($playback)>0){
+                    $back_data['revert_back_id'] = CameraEnum::CAMERA_FILE_EXIST;
+                    DB::table('playback')->where('id',$playback[0]->id)->update($back_data);
+                }
 
                 return $result;
             } else {