|
@@ -661,6 +661,16 @@ class CameraServices
|
|
|
return $result;
|
|
|
}
|
|
|
|
|
|
+ $has_file = file_exists(public_path() . '/' . CameraEnum::M3U8_FILE_PATH . $path . '/' . CameraEnum::M3U8_FILE_NAME);
|
|
|
+ if ($has_file) {
|
|
|
+ $result['data'] = [
|
|
|
+ 'camera_id' => $camera_id,
|
|
|
+ 'url' => env('VIDEO_SYSTEM_URL') . CameraEnum::M3U8_FILE_PATH . $path . '/' . CameraEnum::M3U8_FILE_NAME . '?' . time(),
|
|
|
+ ];
|
|
|
+
|
|
|
+ return $result;
|
|
|
+ }
|
|
|
+
|
|
|
$data = [
|
|
|
'url' => $query->camera_url,
|
|
|
'customPath' => $path,
|
|
@@ -669,30 +679,7 @@ class CameraServices
|
|
|
Log::info('请求流媒体服务器参数------------');
|
|
|
Log::info($data);
|
|
|
|
|
|
- $curl = env('EASY_DARWIN_JF_URL') . CameraEnum::API_STREAM_START . '?' . http_build_query($data);
|
|
|
-
|
|
|
- //请求流媒体服务器拉流
|
|
|
- $curl_res = curl_request($curl);
|
|
|
-
|
|
|
Log::info('请求流媒体服务器result------------');
|
|
|
- Log::info($curl_res);
|
|
|
-
|
|
|
- if (strpos($curl_res,' ')) {
|
|
|
- //标记摄像头为异常状态
|
|
|
- CameraList::where('id', $camera_id)->update(['camera_status' => CameraEnum::CAMERA_STATUS_ERROR]);
|
|
|
-
|
|
|
- $result['status'] = false;
|
|
|
- $result['msg'] = ApiEnum::EASY_DAWIN_REQUEST_FAIL;
|
|
|
- return $result;
|
|
|
- }
|
|
|
-
|
|
|
- //更新拉流id
|
|
|
- CameraList::where('id', $camera_id)->update(
|
|
|
- [
|
|
|
- 'revert_id' => trim($curl_res, '"'),
|
|
|
- 'updated_at' => date('Y-m-d H:i:s'),
|
|
|
- ]
|
|
|
- );
|
|
|
|
|
|
$result['data'] = [
|
|
|
'camera_id' => $camera_id,
|
|
@@ -702,26 +689,26 @@ class CameraServices
|
|
|
//查询是否存在封面图
|
|
|
$cover_picture = CameraList::where('id', $camera_id)->value('cover_picture');
|
|
|
|
|
|
- if (!$cover_picture) {
|
|
|
- if (!is_dir('/www/wwwroot/video.nxjiewei.com/public/' . CameraEnum::M3U8_FILE_PATH . '/' . $path)) {
|
|
|
- mkdir('/www/wwwroot/video.nxjiewei.com/public/' . CameraEnum::M3U8_FILE_PATH . '/' . $path, 0777, true);
|
|
|
- }
|
|
|
- // dd($result_td['content'][0]['url']);
|
|
|
- $exec = 'nohup /usr/bin/ffmpeg -i "' . $query->camera_url . '" -vcodec copy -acodec copy -vbsf h264_mp4toannexb -f hls -hls_flags delete_segments -segment_list_size 10 -hls_list_size 2 /www/wwwroot/video.nxjiewei.com/public/' . CameraEnum::M3U8_FILE_PATH . '/' . $path . '/' . CameraEnum::M3U8_FILE_NAME . ' >/dev/null &';
|
|
|
|
|
|
- shell_exec($exec);
|
|
|
+ if (!is_dir('/www/wwwroot/video.nxjiewei.com/public/' . CameraEnum::M3U8_FILE_PATH . '/' . $path)) {
|
|
|
+ mkdir('/www/wwwroot/video.nxjiewei.com/public/' . CameraEnum::M3U8_FILE_PATH . '/' . $path, 0777, true);
|
|
|
+ }
|
|
|
+ // dd($result_td['content'][0]['url']);
|
|
|
+ $exec = 'nohup /usr/bin/ffmpeg -i "' . $query->camera_url . '" -vcodec copy -acodec copy -vbsf h264_mp4toannexb -f hls -hls_flags delete_segments -segment_list_size 10 -hls_list_size 2 /www/wwwroot/video.nxjiewei.com/public/' . CameraEnum::M3U8_FILE_PATH . '/' . $path . '/' . CameraEnum::M3U8_FILE_NAME . ' >/dev/null &';
|
|
|
|
|
|
- //sleep10秒生成文件
|
|
|
- $i = 1;
|
|
|
- while ($i <= 10) {
|
|
|
- //判断m3u8文件是否存在
|
|
|
- $file_exists = file_exists(public_path() . '/' . CameraEnum::M3U8_FILE_PATH . $path . '/' . CameraEnum::M3U8_FILE_NAME);
|
|
|
+ shell_exec($exec);
|
|
|
|
|
|
- //判断ts文件是否存在
|
|
|
- $ts_exists = glob(public_path() . '/' . CameraEnum::M3U8_FILE_PATH . $path . '/' . CameraEnum::TS_FILE_SUFFIX);
|
|
|
+ //sleep10秒生成文件
|
|
|
+ $i = 1;
|
|
|
+ while ($i <= 10) {
|
|
|
+ //判断m3u8文件是否存在
|
|
|
+ $file_exists = file_exists(public_path() . '/' . CameraEnum::M3U8_FILE_PATH . $path . '/' . CameraEnum::M3U8_FILE_NAME);
|
|
|
|
|
|
- if ($file_exists && $ts_exists) {
|
|
|
+ //判断ts文件是否存在
|
|
|
+ $ts_exists = glob(public_path() . '/' . CameraEnum::M3U8_FILE_PATH . $path . '/' . CameraEnum::TS_FILE_SUFFIX);
|
|
|
|
|
|
+ if ($file_exists && $ts_exists) {
|
|
|
+ if (!$cover_picture) {
|
|
|
//获取第一帧作为封面图
|
|
|
$file_name = time() . CameraEnum::COVER_PICTURE_NAME;
|
|
|
|
|
@@ -739,18 +726,16 @@ class CameraServices
|
|
|
|
|
|
CameraList::where('id', $camera_id)->update(['cover_picture' => $picture_path]);
|
|
|
}
|
|
|
-
|
|
|
- return $result;
|
|
|
- } else {
|
|
|
- sleep(1);
|
|
|
}
|
|
|
-
|
|
|
- $i++;
|
|
|
+ return $result;
|
|
|
+ } else {
|
|
|
+ sleep(1);
|
|
|
}
|
|
|
- }else{
|
|
|
- return $result;
|
|
|
+
|
|
|
+ $i++;
|
|
|
}
|
|
|
|
|
|
+
|
|
|
//标记摄像头为异常状态
|
|
|
CameraList::where('id', $camera_id)->update(['camera_status' => CameraEnum::CAMERA_STATUS_ERROR]);
|
|
|
|