|
@@ -8,10 +8,12 @@
|
|
|
|
|
|
namespace Modules\Camera\Http\Controllers\Api;
|
|
|
|
|
|
+use App\Enum\ApiEnum;
|
|
|
use App\Http\Controllers\Api\BaseController;
|
|
|
use Illuminate\Http\Request;
|
|
|
use Illuminate\Support\Facades\Input;
|
|
|
use Illuminate\Support\Facades\Log;
|
|
|
+use Modules\Camera\Entities\CameraList;
|
|
|
use Modules\Camera\Enum\CameraEnum;
|
|
|
use Modules\Mine\Entities\MineList;
|
|
|
use Modules\Mine\Services\MineServices;
|
|
@@ -308,6 +310,95 @@ class HaiKangController extends BaseController
|
|
|
return $result;
|
|
|
}
|
|
|
|
|
|
+ //海康easy_drawin获取rtsp并推流
|
|
|
+ public function getRtspByCameraId(){
|
|
|
+ $result['status'] = true;
|
|
|
+ $result['msg'] = ApiEnum::RETURN_SUCCESS;
|
|
|
+
|
|
|
+ $query = CameraList::where('id',Input::get('camera_id'))->first();
|
|
|
+
|
|
|
+ if (!$query) {
|
|
|
+ $result['status'] = false;
|
|
|
+ $result['msg'] = ApiEnum::NO_CAMERA_URL;
|
|
|
+ return $result;
|
|
|
+ }
|
|
|
+
|
|
|
+ $degree = MineList::where('id', $query->mine_id)->value('degree');
|
|
|
+
|
|
|
+ $mine_list = MineList::whereIn('id', explode('|', $degree))->select(['title'])->get()->toArray();
|
|
|
+
|
|
|
+ $path = '';
|
|
|
+ foreach ($mine_list as $key => $val) {
|
|
|
+ $path .= '/' . $val['title'];
|
|
|
+ }
|
|
|
+ $new_camera_name = str_replace('-','',$query->camera_name);
|
|
|
+ $new_camera_name = str_replace('#','号',$new_camera_name);
|
|
|
+ $path .= '/' . $new_camera_name;
|
|
|
+
|
|
|
+ //标记摄像头为在线状态
|
|
|
+ CameraList::where('id', Input::get('camera_id'))->update(['camera_status' => CameraEnum::CAMERA_STATUS_ONLINE]);
|
|
|
+
|
|
|
+ //已有拉流id,直接返回拉流链接
|
|
|
+ if($query->revert_id != 'NullId'){
|
|
|
+ $result['data'] = [
|
|
|
+ 'camera_id' => Input::get('camera_id'),
|
|
|
+ 'url' => env('EASY_DARWIN_JF_RTSP') . $path
|
|
|
+ ];
|
|
|
+ return $result;
|
|
|
+ }
|
|
|
+
|
|
|
+ $url = $this->artemis.'/api/video/v1/cameras/previewURLs';
|
|
|
+ $params['cameraIndexCode'] = $query->index_code;
|
|
|
+ $params['streamType'] = 1; //0主码流 1子码流 2第三码流
|
|
|
+ $params['protocol'] = 'rtsp';
|
|
|
+ $params['transmode'] = 1; //0:UDP 1:TCP
|
|
|
+ $params['expand'] = 'streamform=rtp';
|
|
|
+
|
|
|
+ $this->sign = $this->get_sign($url);
|
|
|
+
|
|
|
+ $rtsp = $this->curlPost($this->pre_url . $url, json_encode($params));
|
|
|
+
|
|
|
+ $rtsp = json_decode($rtsp, true);
|
|
|
+
|
|
|
+ $data = [
|
|
|
+ 'url' => $rtsp['data']['url'],
|
|
|
+ 'customPath' => $path,
|
|
|
+ ];
|
|
|
+ // dd($data);
|
|
|
+ Log::info('请求流媒体服务器参数------------');
|
|
|
+ Log::info($data);
|
|
|
+
|
|
|
+ $curl = env('EASY_DARWIN_JF_URL') . CameraEnum::API_STREAM_START . '?' . http_build_query($data);
|
|
|
+
|
|
|
+ //请求流媒体服务器拉流
|
|
|
+ $curl_res = curl_request($curl);
|
|
|
+
|
|
|
+
|
|
|
+ // DB::table('camera_list')->where('id',$camera_id)->update($res);
|
|
|
+ // dd($res);
|
|
|
+ Log::info('请求流媒体服务器result------------');
|
|
|
+ Log::info($curl_res);
|
|
|
+
|
|
|
+ if(strlen($curl_res) < 20){
|
|
|
+ CameraList::where('id', Input::get('camera_id'))->update(['revert_id' => $curl_res]);
|
|
|
+ }
|
|
|
+ if (strpos($curl_res,' ')) {
|
|
|
+ //标记摄像头为异常状态
|
|
|
+ CameraList::where('id', Input::get('camera_id'))->update(['camera_status' => CameraEnum::CAMERA_STATUS_ERROR]);
|
|
|
+
|
|
|
+ $result['status'] = false;
|
|
|
+ $result['msg'] = ApiEnum::EASY_DAWIN_REQUEST_FAIL;
|
|
|
+ return $result;
|
|
|
+ }
|
|
|
+
|
|
|
+ $result['data'] = [
|
|
|
+ 'camera_id' => Input::get('camera_id'),
|
|
|
+ 'url' => env('EASY_DARWIN_JF_RTSP') . $path
|
|
|
+ ];
|
|
|
+
|
|
|
+ return $result;
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 以appSecret为密钥,使用HmacSHA256算法对签名字符串生成消息摘要,对消息摘要使用BASE64算法生成签名(签名过程中的编码方式全为UTF-8)
|
|
|
*/
|