Преглед изворни кода

添加停止摄像头推流接口

qiuzijian пре 4 година
родитељ
комит
c548b9728a

+ 46 - 55
.idea/workspace.xml

@@ -2,6 +2,10 @@
 <project version="4">
   <component name="ChangeListManager">
     <list default="true" id="b5beace6-e4f4-419b-8299-c67e17af5998" name="Default Changelist" comment="">
+      <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
+      <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/Http/Controllers/Api/CameraApiController.php" beforeDir="false" afterPath="$PROJECT_DIR$/Modules/Camera/Http/Controllers/Api/CameraApiController.php" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/Modules/Camera/Routes/api.php" beforeDir="false" afterPath="$PROJECT_DIR$/Modules/Camera/Routes/api.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" />
@@ -15,11 +19,11 @@
   </component>
   <component name="FileEditorManager">
     <leaf>
-      <file pinned="false" current-in-tab="false">
+      <file pinned="false" current-in-tab="true">
         <entry file="file://$PROJECT_DIR$/Modules/Camera/Http/Controllers/Api/CameraApiController.php">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="508">
-              <caret line="42" column="42" selection-start-line="42" selection-start-column="33" selection-end-line="42" selection-end-column="42" />
+            <state relative-caret-position="443">
+              <caret line="55" column="18" selection-start-line="55" selection-start-column="18" selection-end-line="55" selection-end-column="18" />
               <folding>
                 <element signature="e#141#162#0#PHP" expanded="true" />
               </folding>
@@ -27,11 +31,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="424">
-              <caret line="317" column="13" lean-forward="true" selection-start-line="317" selection-start-column="13" selection-end-line="317" selection-end-column="13" />
+            <state relative-caret-position="592">
+              <caret line="368" column="23" selection-start-line="368" selection-start-column="23" selection-end-line="368" selection-end-column="23" />
               <folding>
                 <element signature="e#129#150#0#PHP" expanded="true" />
               </folding>
@@ -40,19 +44,10 @@
         </entry>
       </file>
       <file pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/.env">
-          <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="656">
-              <caret line="46" column="44" lean-forward="true" selection-start-line="46" selection-start-column="16" selection-end-line="46" selection-end-column="44" />
-            </state>
-          </provider>
-        </entry>
-      </file>
-      <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="357">
-              <caret line="22" column="24" selection-start-line="22" selection-start-column="10" selection-end-line="22" selection-end-column="24" />
+            <state relative-caret-position="168">
+              <caret line="13" column="34" selection-start-line="13" selection-start-column="10" selection-end-line="13" selection-end-column="34" />
             </state>
           </provider>
         </entry>
@@ -78,8 +73,8 @@
       <file pinned="false" current-in-tab="false">
         <entry file="file://$PROJECT_DIR$/Modules/Camera/Routes/api.php">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="105">
-              <caret line="14" column="37" selection-start-line="14" selection-start-column="37" selection-end-line="14" selection-end-column="37" />
+            <state relative-caret-position="147">
+              <caret line="16" column="34" selection-start-line="16" selection-start-column="24" selection-end-line="16" selection-end-column="34" />
             </state>
           </provider>
         </entry>
@@ -160,7 +155,6 @@
         <option value="$PROJECT_DIR$/app/Http/Controllers/Api/BaseController.php" />
         <option value="$PROJECT_DIR$/Modules/Admin/Traits/ClassifyMethod.php" />
         <option value="$PROJECT_DIR$/storage/logs/laravel-2021-04-25.log" />
-        <option value="$PROJECT_DIR$/storage/logs/laravel-2021-04-26.log" />
         <option value="$PROJECT_DIR$/resources/lang/en/auth.php" />
         <option value="$PROJECT_DIR$/Modules/Admin/Http/Controllers/LoginController.php" />
         <option value="$PROJECT_DIR$/Modules/Mine/Http/Controllers/MineController.php" />
@@ -171,12 +165,13 @@
         <option value="$PROJECT_DIR$/Modules/Mine/Routes/api.php" />
         <option value="$PROJECT_DIR$/Modules/Mine/Services/MineServices.php" />
         <option value="$PROJECT_DIR$/app/Enum/ApiEnum.php" />
-        <option value="$PROJECT_DIR$/Modules/Camera/Enum/CameraEnum.php" />
-        <option value="$PROJECT_DIR$/Modules/Camera/Routes/api.php" />
-        <option value="$PROJECT_DIR$/Modules/Camera/Http/Controllers/Api/CameraApiController.php" />
         <option value="$PROJECT_DIR$/app/Helpers.php" />
         <option value="$PROJECT_DIR$/.env" />
+        <option value="$PROJECT_DIR$/Modules/Camera/Routes/api.php" />
+        <option value="$PROJECT_DIR$/storage/logs/laravel-2021-04-26.log" />
+        <option value="$PROJECT_DIR$/Modules/Camera/Enum/CameraEnum.php" />
         <option value="$PROJECT_DIR$/Modules/Camera/Services/CameraServices.php" />
+        <option value="$PROJECT_DIR$/Modules/Camera/Http/Controllers/Api/CameraApiController.php" />
       </list>
     </option>
   </component>
@@ -404,12 +399,12 @@
       <option name="presentableId" value="Default" />
       <updated>1618368322468</updated>
       <workItem from="1618368323697" duration="143000" />
-      <workItem from="1618368497550" duration="133835000" />
+      <workItem from="1618368497550" duration="135142000" />
     </task>
     <servers />
   </component>
   <component name="TimeTrackingManager">
-    <option name="totallyTimeSpent" value="133978000" />
+    <option name="totallyTimeSpent" value="135285000" />
   </component>
   <component name="ToolWindowManager">
     <frame x="0" y="0" width="1440" height="900" extended-state="0" />
@@ -740,30 +735,6 @@
         </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="357">
-          <caret line="22" column="24" selection-start-line="22" selection-start-column="10" selection-end-line="22" selection-end-column="24" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/Modules/Camera/Routes/api.php">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="105">
-          <caret line="14" column="37" selection-start-line="14" selection-start-column="37" selection-end-line="14" selection-end-column="37" />
-        </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="508">
-          <caret line="42" column="42" selection-start-line="42" selection-start-column="33" selection-end-line="42" selection-end-column="42" />
-          <folding>
-            <element signature="e#141#162#0#PHP" expanded="true" />
-          </folding>
-        </state>
-      </provider>
-    </entry>
     <entry file="file://$PROJECT_DIR$/Modules/Camera/Jobs/CameraListExcel.php">
       <provider selected="true" editor-type-id="text-editor">
         <state relative-caret-position="918">
@@ -798,14 +769,17 @@
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/storage/logs/laravel-2021-04-26.log">
+    <entry file="file://$PROJECT_DIR$/vendor/filp/whoops/src/Whoops/Resources/views/env_details.html.php">
+      <provider selected="true" editor-type-id="text-editor" />
+    </entry>
+    <entry file="file://$PROJECT_DIR$/Modules/Camera/Routes/api.php">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="-1975">
-          <caret line="7" column="46" lean-forward="true" selection-start-line="7" selection-start-column="46" selection-end-line="7" selection-end-column="46" />
+        <state relative-caret-position="147">
+          <caret line="16" column="34" selection-start-line="16" selection-start-column="24" selection-end-line="16" selection-end-column="34" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/vendor/filp/whoops/src/Whoops/Resources/views/env_details.html.php">
+    <entry file="file://$PROJECT_DIR$/storage/logs/laravel-2021-04-26.log">
       <provider selected="true" editor-type-id="text-editor" />
     </entry>
     <entry file="file://$PROJECT_DIR$/.env">
@@ -815,15 +789,32 @@
         </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="168">
+          <caret line="13" column="34" selection-start-line="13" selection-start-column="10" selection-end-line="13" selection-end-column="34" />
+        </state>
+      </provider>
+    </entry>
     <entry file="file://$PROJECT_DIR$/Modules/Camera/Services/CameraServices.php">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="424">
-          <caret line="317" column="13" lean-forward="true" selection-start-line="317" selection-start-column="13" selection-end-line="317" selection-end-column="13" />
+        <state relative-caret-position="592">
+          <caret line="368" column="23" selection-start-line="368" selection-start-column="23" selection-end-line="368" selection-end-column="23" />
           <folding>
             <element signature="e#129#150#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="443">
+          <caret line="55" column="18" selection-start-line="55" selection-start-column="18" selection-end-line="55" selection-end-column="18" />
+          <folding>
+            <element signature="e#141#162#0#PHP" expanded="true" />
+          </folding>
+        </state>
+      </provider>
+    </entry>
   </component>
 </project>

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

@@ -15,6 +15,7 @@ class CameraEnum
 
     //流媒体api地址
     const API_STREAM_START = 'api/v1/stream/start';  //启动拉转推
+    const API_STREAM_STOP  = 'api/v1/stream/stop';  //停止推流
 
     //m3u8视频文件保存地址
     const M3U8_FILE_PATH = 'files/video/m3u8';

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

@@ -50,4 +50,22 @@ class CameraApiController extends BaseController
 
         return self::successResponse($result);
     }
+
+    /**
+     * 作者: qiuzijian
+     * 注释: 停止摄像头推流
+     * @return \App\Http\Controllers\Api\JsonResponse
+     */
+    public function stopCamerasStream()
+    {
+        $camera_id = Input::get('camera_id', '');
+
+        if (!$camera_id) {
+            return self::errorResponse(ApiEnum::STATUS_CODE_EMPTY);
+        }
+
+        $result = CameraServices::stopCameraStream($camera_id);
+
+        return self::successResponse($result);
+    }
 }

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

@@ -14,4 +14,5 @@
 Route::namespace('Api')->group(function () {
     Route::post('camera/getlist', 'CameraApiController@getCamerasList');
     Route::post('camera/geturl', 'CameraApiController@getCamerasUrl');
+    Route::post('camera/stopstream', 'CameraApiController@stopCamerasStream');
 });

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

@@ -313,16 +313,59 @@ class CameraServices
         //更新拉流id
         CameraList::where('id', $camera_id)->update(
             [
-                'revert_id'  => $curl_res,
+                'revert_id'  => trim($curl_res, '"'),
                 'updated_at' => date('Y-m-d H:i:s'),
             ]
         );
 
         $result['data'] = [
-            'camera_id' => trim($camera_id, '"'),
+            'camera_id' => $camera_id,
             'url' => env('VIDEO_SYSTEM_URL') . CameraEnum::M3U8_FILE_PATH . $path . '/' . date('Ymd', time()) . '/' . CameraEnum::M3U8_FILE_NAME,
         ];
 
         return $result;
     }
+
+    //停止流媒体推流
+    public static function stopCameraStream($camera_id)
+    {
+        $result['status'] = true;
+        $result['msg']    = ApiEnum::RETURN_SUCCESS;
+
+        $query = CameraList::where('id', $camera_id)->first();
+
+        if (!$query) {
+            $result['status'] = false;
+            $result['msg'] = ApiEnum::NO_CAMERA_URL;
+            return $result;
+        }
+
+        $data = [
+            'id' => $query->camera_id
+        ];
+
+        $curl = env('EASY_DARWIN_URL') . CameraEnum::API_STREAM_STOP . '?' . http_build_query($data);
+
+        //请求流媒体服务器拉流
+        $curl_res = curl_request($curl);
+
+        Log::info('请求流媒体服务器result------------');
+        Log::info($curl_res);
+
+        if (trim($curl_res, '"') != 'OK') {
+            $result['status'] = false;
+            $result['msg'] = ApiEnum::EASY_DAWIN_REQUEST_FAIL;
+            return $result;
+        }
+
+        //更新拉流id为默认id
+        CameraList::where('id', $camera_id)->update(
+            [
+                'revert_id'  => CameraEnum::CAMERA_DEFAULT_REVERT_ID,
+                'updated_at' => date('Y-m-d H:i:s'),
+            ]
+        );
+
+        return $result;
+    }
 }