Quellcode durchsuchen

添加更新摄像头在线状态脚本

qiuzijian vor 3 Jahren
Ursprung
Commit
bfd768875b

+ 85 - 57
.idea/workspace.xml

@@ -2,6 +2,7 @@
 <project version="4">
   <component name="ChangeListManager">
     <list default="true" id="b5beace6-e4f4-419b-8299-c67e17af5998" name="Default Changelist" comment="">
+      <change beforePath="$PROJECT_DIR$/Modules/Camera/Enum/CameraEnum.php" beforeDir="false" afterPath="$PROJECT_DIR$/Modules/Camera/Enum/CameraEnum.php" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/Modules/Camera/Services/CameraServices.php" beforeDir="false" afterPath="$PROJECT_DIR$/Modules/Camera/Services/CameraServices.php" afterDir="false" />
     </list>
     <option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
@@ -18,8 +19,8 @@
       <file pinned="false" current-in-tab="false">
         <entry file="file://$PROJECT_DIR$/Modules/Camera/Enum/CameraEnum.php">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="503">
-              <caret line="30" column="24" selection-start-line="30" selection-start-column="10" selection-end-line="30" selection-end-column="24" />
+            <state relative-caret-position="592">
+              <caret line="126" column="30" selection-start-line="126" selection-start-column="10" selection-end-line="126" selection-end-column="30" />
             </state>
           </provider>
         </entry>
@@ -36,11 +37,11 @@
           </provider>
         </entry>
       </file>
-      <file pinned="false" current-in-tab="true">
+      <file pinned="false" current-in-tab="false">
         <entry file="file://$PROJECT_DIR$/Modules/Camera/Services/CameraServices.php">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="652">
-              <caret line="823" column="12" selection-start-line="823" selection-start-column="12" selection-end-line="823" selection-end-column="12" />
+            <state relative-caret-position="373">
+              <caret line="467" column="21" selection-start-line="467" selection-start-column="12" selection-end-line="467" selection-end-column="21" />
               <folding>
                 <element signature="e#129#150#0#PHP" expanded="true" />
               </folding>
@@ -60,8 +61,8 @@
       <file pinned="false" current-in-tab="false">
         <entry file="file://$PROJECT_DIR$/Modules/Camera/Http/Controllers/Api/CameraApiController.php">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="253">
-              <caret line="82" column="44" lean-forward="true" selection-start-line="82" selection-start-column="44" selection-end-line="82" selection-end-column="44" />
+            <state relative-caret-position="585">
+              <caret line="84" column="46" selection-start-line="84" selection-start-column="46" selection-end-line="84" selection-end-column="46" />
               <folding>
                 <element signature="e#141#162#0#PHP" expanded="true" />
               </folding>
@@ -81,8 +82,32 @@
       <file pinned="false" current-in-tab="false">
         <entry file="file://$PROJECT_DIR$/app/Console/Commands/UpdateHkList.php">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="858">
-              <caret line="101" column="59" selection-start-line="101" selection-start-column="59" selection-end-line="101" selection-end-column="59" />
+            <state relative-caret-position="370">
+              <caret line="68" column="74" selection-start-line="68" selection-start-column="64" selection-end-line="68" selection-end-column="74" />
+              <folding>
+                <element signature="e#40#71#0#PHP" expanded="true" />
+              </folding>
+            </state>
+          </provider>
+        </entry>
+      </file>
+      <file pinned="false" current-in-tab="true">
+        <entry file="file://$PROJECT_DIR$/app/Console/Commands/UpdateCameraStatus.php">
+          <provider selected="true" editor-type-id="text-editor">
+            <state relative-caret-position="590">
+              <caret line="83" column="24" selection-start-line="83" selection-start-column="24" selection-end-line="83" selection-end-column="24" />
+              <folding>
+                <element signature="e#40#71#0#PHP" expanded="true" />
+              </folding>
+            </state>
+          </provider>
+        </entry>
+      </file>
+      <file pinned="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/app/Console/Commands/StopStreamDelFiles.php">
+          <provider selected="true" editor-type-id="text-editor">
+            <state relative-caret-position="571">
+              <caret line="40" column="43" lean-forward="true" selection-start-line="40" selection-start-column="8" selection-end-line="40" selection-end-column="43" />
               <folding>
                 <element signature="e#40#71#0#PHP" expanded="true" />
               </folding>
@@ -94,8 +119,6 @@
   </component>
   <component name="FindInProjectRecents">
     <findStrings>
-      <find>camera_url</find>
-      <find>CameraEnum::CAMERA_SOURCE_3</find>
       <find>camera_source</find>
       <find>data-href</find>
       <find>oss</find>
@@ -124,6 +147,8 @@
       <find>编辑</find>
       <find>regionInfo</find>
       <find>getCamerasList</find>
+      <find>RE</find>
+      <find>CAMERA_S</find>
     </findStrings>
   </component>
   <component name="Git.Settings">
@@ -132,7 +157,6 @@
   <component name="IdeDocumentHistory">
     <option name="CHANGED_PATHS">
       <list>
-        <option value="$PROJECT_DIR$/Modules/Admin/Auxiliary/View/TreeAuxiliary.php" />
         <option value="$PROJECT_DIR$/storage/logs/laravel-2021-04-28.log" />
         <option value="$PROJECT_DIR$/app/Http/Controllers/Api/BaseController.php" />
         <option value="$PROJECT_DIR$/Modules/Mine/Enum/MineEnum.php" />
@@ -180,9 +204,10 @@
         <option value="$PROJECT_DIR$/Modules/Camera/Http/Controllers/Api/HaiKangController.php" />
         <option value="$PROJECT_DIR$/app/Console/Commands/UpdateHkList.php" />
         <option value="$PROJECT_DIR$/Modules/Camera/Database/Migrations/2022_01_21_151316_add_field_to_camera_list_2021_01_21.php" />
-        <option value="$PROJECT_DIR$/Modules/Camera/Enum/CameraEnum.php" />
         <option value="$PROJECT_DIR$/app/Http/Controllers/TestsController.php" />
         <option value="$PROJECT_DIR$/Modules/Camera/Services/CameraServices.php" />
+        <option value="$PROJECT_DIR$/Modules/Camera/Enum/CameraEnum.php" />
+        <option value="$PROJECT_DIR$/app/Console/Commands/UpdateCameraStatus.php" />
       </list>
     </option>
   </component>
@@ -426,12 +451,12 @@
       <workItem from="1640681616752" duration="486000" />
       <workItem from="1641785500605" duration="61000" />
       <workItem from="1641786030534" duration="477000" />
-      <workItem from="1641800375826" duration="18337000" />
+      <workItem from="1641800375826" duration="21552000" />
     </task>
     <servers />
   </component>
   <component name="TimeTrackingManager">
-    <option name="totallyTimeSpent" value="421703000" />
+    <option name="totallyTimeSpent" value="424918000" />
   </component>
   <component name="ToolWindowManager">
     <frame x="0" y="0" width="1440" height="900" extended-state="0" />
@@ -462,13 +487,6 @@
     <option name="version" value="1" />
   </component>
   <component name="editorHistoryManager">
-    <entry file="file://$PROJECT_DIR$/resources/lang/en/auth.php">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="315">
-          <caret line="15" column="11" selection-start-line="15" selection-start-column="5" selection-end-line="15" selection-end-column="11" />
-        </state>
-      </provider>
-    </entry>
     <entry file="file://$PROJECT_DIR$/Modules/Admin/Routes/web.php">
       <provider selected="true" editor-type-id="text-editor">
         <state relative-caret-position="126">
@@ -614,16 +632,6 @@
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/app/Console/Commands/StopStreamDelFiles.php">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="740">
-          <caret line="40" column="35" selection-start-line="40" selection-start-column="35" selection-end-line="40" selection-end-column="35" />
-          <folding>
-            <element signature="e#40#71#0#PHP" expanded="true" />
-          </folding>
-        </state>
-      </provider>
-    </entry>
     <entry file="file://$PROJECT_DIR$/Modules/Admin/Routes/api.php">
       <provider selected="true" editor-type-id="text-editor" />
     </entry>
@@ -729,16 +737,6 @@
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/app/Console/Commands/UpdateHkList.php">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="858">
-          <caret line="101" column="59" selection-start-line="101" selection-start-column="59" selection-end-line="101" selection-end-column="59" />
-          <folding>
-            <element signature="e#40#71#0#PHP" expanded="true" />
-          </folding>
-        </state>
-      </provider>
-    </entry>
     <entry file="file://$PROJECT_DIR$/Modules/Camera/Database/Migrations/2021_12_22_162404_add_field_to_camera_list.php">
       <provider selected="true" editor-type-id="text-editor">
         <state relative-caret-position="294">
@@ -777,46 +775,76 @@
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/Modules/Camera/Http/Controllers/Api/CameraApiController.php">
+    <entry file="file://$PROJECT_DIR$/app/Helpers.php">
       <provider selected="true" editor-type-id="text-editor">
         <state relative-caret-position="253">
-          <caret line="82" column="44" lean-forward="true" selection-start-line="82" selection-start-column="44" selection-end-line="82" selection-end-column="44" />
+          <caret line="96" column="25" selection-start-line="96" selection-start-column="20" selection-end-line="96" selection-end-column="25" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/app/Http/Controllers/TestsController.php">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="483">
+          <caret line="28" column="26" lean-forward="true" selection-start-line="28" selection-start-column="26" selection-end-line="28" selection-end-column="26" />
+          <folding>
+            <element signature="e#126#164#0#PHP" expanded="true" />
+          </folding>
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/Modules/Camera/Http/Controllers/Api/CameraApiController.php">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="585">
+          <caret line="84" column="46" selection-start-line="84" selection-start-column="46" selection-end-line="84" selection-end-column="46" />
           <folding>
             <element signature="e#141#162#0#PHP" expanded="true" />
           </folding>
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/app/Helpers.php">
+    <entry file="file://$PROJECT_DIR$/app/Console/Commands/UpdateHkList.php">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="253">
-          <caret line="96" column="25" selection-start-line="96" selection-start-column="20" selection-end-line="96" selection-end-column="25" />
+        <state relative-caret-position="370">
+          <caret line="68" column="74" selection-start-line="68" selection-start-column="64" selection-end-line="68" selection-end-column="74" />
+          <folding>
+            <element signature="e#40#71#0#PHP" expanded="true" />
+          </folding>
         </state>
       </provider>
     </entry>
     <entry file="file://$PROJECT_DIR$/Modules/Camera/Enum/CameraEnum.php">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="503">
-          <caret line="30" column="24" selection-start-line="30" selection-start-column="10" selection-end-line="30" selection-end-column="24" />
+        <state relative-caret-position="592">
+          <caret line="126" column="30" selection-start-line="126" selection-start-column="10" selection-end-line="126" selection-end-column="30" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/app/Http/Controllers/TestsController.php">
+    <entry file="file://$PROJECT_DIR$/Modules/Camera/Services/CameraServices.php">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="483">
-          <caret line="28" column="26" lean-forward="true" selection-start-line="28" selection-start-column="26" selection-end-line="28" selection-end-column="26" />
+        <state relative-caret-position="373">
+          <caret line="467" column="21" selection-start-line="467" selection-start-column="12" selection-end-line="467" selection-end-column="21" />
           <folding>
-            <element signature="e#126#164#0#PHP" expanded="true" />
+            <element signature="e#129#150#0#PHP" expanded="true" />
           </folding>
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/Modules/Camera/Services/CameraServices.php">
+    <entry file="file://$PROJECT_DIR$/app/Console/Commands/StopStreamDelFiles.php">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="652">
-          <caret line="823" column="12" selection-start-line="823" selection-start-column="12" selection-end-line="823" selection-end-column="12" />
+        <state relative-caret-position="571">
+          <caret line="40" column="43" lean-forward="true" selection-start-line="40" selection-start-column="8" selection-end-line="40" selection-end-column="43" />
           <folding>
-            <element signature="e#129#150#0#PHP" expanded="true" />
+            <element signature="e#40#71#0#PHP" expanded="true" />
+          </folding>
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/app/Console/Commands/UpdateCameraStatus.php">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="590">
+          <caret line="83" column="24" selection-start-line="83" selection-start-column="24" selection-end-line="83" selection-end-column="24" />
+          <folding>
+            <element signature="e#40#71#0#PHP" expanded="true" />
           </folding>
         </state>
       </provider>

+ 4 - 0
Modules/Camera/Enum/CameraEnum.php

@@ -122,4 +122,8 @@ class CameraEnum
         self::CODE_STREAM_SUB  => '1',  //子码流
         self::CODE_STREAM_MAIN => '0',  //主码流
     ];
+
+    //摄像头状态
+    const CAMERA_STATUS_ONLINE  = '1';  //在线
+    const CAMERA_STATUS_OFFLINE = '2';  //离线
 }

+ 6 - 2
Modules/Camera/Services/CameraServices.php

@@ -417,11 +417,15 @@ class CameraServices
             'url' => env('VIDEO_SYSTEM_URL') . CameraEnum::M3U8_FILE_PATH . $path . '/' . date('Ymd', time()) . '/' . CameraEnum::M3U8_FILE_NAME . '?' . time(),
         ];
 
+        //sleep10秒生成文件
         $i = 1;
         while ($i <= 10) {
+            //判断m3u8文件是否存在
             $file_exists = file_exists(public_path() . '/' . CameraEnum::M3U8_FILE_PATH . $path . '/' . date('Ymd', time()) . '/' . CameraEnum::M3U8_FILE_NAME);
+            //判断ts文件是否存在
+            $ts_exists = glob(public_path() . '/' . CameraEnum::M3U8_FILE_PATH . '/' . $path . '/' . date('Ymd', time()) . '/' . CameraEnum::TS_FILE_SUFFIX);
 
-            if ($file_exists) {
+            if ($file_exists && $ts_exists) {
                 //更新拉流id
                 CameraList::where('id', $camera_id)->update(
                     [
@@ -821,7 +825,7 @@ class CameraServices
 
                 $i++;
             }
-            
+
             $result['status'] = false;
             $result['msg'] = ApiEnum::HK_REQUEST_FAIL;
             return $result;

+ 90 - 0
app/Console/Commands/UpdateCameraStatus.php

@@ -0,0 +1,90 @@
+<?php
+
+namespace App\Console\Commands;
+
+use Illuminate\Console\Command;
+use Modules\Camera\Entities\CameraList;
+use Modules\Camera\Enum\CameraEnum;
+use Modules\Camera\Services\CameraServices;
+use Modules\Mine\Entities\MineListExt;
+
+class UpdateCameraStatus extends Command
+{
+    /**
+     * The name and signature of the console command.
+     *
+     * @var string
+     */
+    protected $signature = 'camera:updatestatus';
+
+    /**
+     * The console command description.
+     *
+     * @var string
+     */
+    protected $description = '更新摄像头在线状态';
+
+    /**
+     * Create a new command instance.
+     *
+     * @return void
+     */
+    public function __construct()
+    {
+        parent::__construct();
+    }
+
+    /**
+     * Execute the console command.
+     *
+     * @return mixed
+     */
+    public function handle()
+    {
+
+    }
+
+    public function updateCameraStatus()
+    {
+        //查询海康视频服务器中的所有摄像头
+        $camera_list = CameraList::join(
+            'mine_list', 'camera_list.mine_id', '=', 'mine_list.id'
+        )->where(
+            [
+                'camera_list.camera_source'  => CameraEnum::CAMERA_SOURCE_2,
+                'camera_list.video_recorder' => CameraEnum::VIDEO_RECORDER_HK
+            ]
+        )->select(
+            [
+                'mine_list.degree',
+                'camera_list.id'
+            ]
+        )->get()->toArray();
+
+        //先将所有摄像头标记为在线状态
+        CameraList::where(
+            [
+                'camera_source'  => CameraEnum::CAMERA_SOURCE_2,
+                'video_recorder' => CameraEnum::VIDEO_RECORDER_HK,
+            ]
+        )->update(['camera_status' => CameraEnum::CAMERA_STATUS_ONLINE]);
+
+        //循环取流
+        $i = 0;
+        foreach ($camera_list as $key => $val) {
+            $degree = explode('|', $val->degree);
+            $result = CameraServices::downloadCameraFiles($degree[0], $val->id);
+            //取流成功,摄像头标记为在线,失败为离线
+            if (!$result['status']) {
+                CameraList::where('id', $val->id)->update(['camera_status' => CameraEnum::CAMERA_STATUS_OFFLINE]);
+            }
+            $i++;
+
+            //每循环20个停止一次推流
+            if ($i == 50) {
+                $i = 0;
+                CameraServices::stopCameraStream();
+            }
+        }
+    }
+}