|
@@ -546,6 +546,7 @@ class HaiKangController extends BaseController
|
|
|
return $data;
|
|
|
}
|
|
|
|
|
|
+ //海康获取rtsp
|
|
|
public function getHikRtsp(){
|
|
|
$result['status'] = true;
|
|
|
$result['msg'] = ApiEnum::RETURN_SUCCESS;
|
|
@@ -629,6 +630,90 @@ class HaiKangController extends BaseController
|
|
|
return $result;
|
|
|
}
|
|
|
|
|
|
+ //海康获取rtmp
|
|
|
+ public function getHikRtmp(){
|
|
|
+ $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;
|
|
|
+
|
|
|
+ if($query->code_stream == 2){
|
|
|
+ $code_stream = 0;
|
|
|
+ }else{
|
|
|
+ $code_stream = 1;
|
|
|
+ }
|
|
|
+
|
|
|
+ $url = $this->artemis.'/api/video/v1/cameras/previewURLs';
|
|
|
+ $params['cameraIndexCode'] = $query->index_code;
|
|
|
+ $params['streamType'] = $code_stream; //0主码流 1子码流 2第三码流
|
|
|
+ $params['protocol'] = 'rtmp';//rtmp
|
|
|
+ $params['transmode'] = 1; //0:UDP 1:TCP
|
|
|
+ $params['expand'] = 'streamform=rtp';
|
|
|
+
|
|
|
+ $this->sign = $this->get_sign($url);
|
|
|
+
|
|
|
+ $rtmp = $this->curlPost($this->pre_url . $url, json_encode($params));
|
|
|
+
|
|
|
+ $rtmp = json_decode($rtmp, true);
|
|
|
+
|
|
|
+ if($rtmp['data']['url']){
|
|
|
+ //访问记录
|
|
|
+ $log['mine_id'] = $query->mine_id;
|
|
|
+ $log['camera_id'] = Input::get('camera_id');
|
|
|
+ $log['log'] = '海康接口返回rtsp成功';
|
|
|
+ $log['status'] = 0;//正常
|
|
|
+ $log['created_at'] = date('Y-m-d H:i:s');
|
|
|
+ $log['updated_at'] = date('Y-m-d H:i:s');
|
|
|
+ DB::table('log')->insert($log);
|
|
|
+ }else{
|
|
|
+ //访问记录
|
|
|
+ $log['mine_id'] = $query->mine_id;
|
|
|
+ $log['camera_id'] = Input::get('camera_id');
|
|
|
+ $log['log'] = '海康接口返回rtsp失败';
|
|
|
+ $log['status'] = 1;//异常
|
|
|
+ $log['created_at'] = date('Y-m-d H:i:s');
|
|
|
+ $log['updated_at'] = date('Y-m-d H:i:s');
|
|
|
+ DB::table('log')->insert($log);
|
|
|
+ }
|
|
|
+
|
|
|
+ $ffmpeg_rtmp = $rtmp['data']['url'];
|
|
|
+
|
|
|
+ $rtmp['data']['url'] = substr_replace($rtmp['data']['url'],env('HK_RTMP'),7,12);
|
|
|
+
|
|
|
+ $result['data'] = [
|
|
|
+ 'camera_id' => Input::get('camera_id'),
|
|
|
+ 'url' => $rtmp['data']['url']
|
|
|
+ ];
|
|
|
+
|
|
|
+ //查询是否存在封面图
|
|
|
+ $cover_picture = CameraList::where('id', Input::get('camera_id'))->value('cover_picture');
|
|
|
+
|
|
|
+ if (!$cover_picture) {
|
|
|
+ register_shutdown_function(array($this, "getFirstPicture"),$path,$ffmpeg_rtmp);
|
|
|
+ }
|
|
|
+
|
|
|
+ return $result;
|
|
|
+ }
|
|
|
+
|
|
|
//宁煤集团获取rtsp流后获取首帧图片
|
|
|
public function getFirstPicture($path,$ffmpeg_rtsp){
|
|
|
if (!is_dir('/www/wwwroot/video.nxjiewei.com/public/' . CameraEnum::M3U8_FILE_PATH . '/' . $path)) {
|